Why is using OPENQUERY on a local server bad?

Dlongnecker picture Dlongnecker · Mar 3, 2010 · Viewed 19k times · Source

I'm writing a script that is supposed to run around a bunch of servers and select a bunch of data out of them, including the local server. The SQL needed to SELECT the data I need is pretty complicated, so I'm writing sort of an ad-hoc view, and using an OPENQUERY statement to get the data, so ultimately I end up looping over a statement like this:

exec('INSERT INTO tabl SELECT * FROM OPENQUERY(@Server, @AdHocView)')

However, I've heard that using OPENQUERY on the local server is frowned upon. Could someone elaborate as to why?

Answer

OMG Ponies picture OMG Ponies · Mar 3, 2010
  • Although the query may return multiple result sets, OPENQUERY returns only the first one.
  • OPENQUERY does not accept variables for its arguments.
  • OPENQUERY cannot be used to execute extended stored procedures on a linked server. However, an extended stored procedure can be executed on a linked server by using a four-part name.
  • If the sp_addlinkedserver stored procedure is used within same script, the credentials used on the remote server are hardcoded into the script, visible to anyone who has a copy

Reference: