How to do an UPDATE Pass-Through Query in SQL Server

In SQL Server, the OPENQUERY rowset function enables you to execute a pass-through query on a linked server.

OPENQUERY is commonly referenced in the FROM clause of a query as if it were a table, but it can also be referenced as the target table of an INSERT, UPDATE, or DELETE statement.

This article presents an example of using OPENQUERY to do an UPDATE pass-through query.

Continue reading

How to Reference JSON Keys that Contain Special Characters when using OPENJSON, JSON_QUERY, and JSON_VALUE (SQL Server)

If you’re using a T-SQL function such as OPENJSON(), JSON_QUERY(), or JSON_VALUE(), you might be wary of any non-alphanumeric characters that might be in the JSON document that you’re working with. Especially if those special characters are in the key names, and you need to reference those key names.

Continue reading

OPENROWSET does not accept variables for its arguments (SQL Server)

If you’re trying to use OPENROWSET to run an ad hoc distributed query in SQL Server, but you keep getting an “incorrect syntax” error, and you just can’t see anything wrong with your syntax, it could be that you’re trying to use a variable for one of the arguments.

As mentioned in the title of this post, OPENROWSET does not accept variables for its arguments.

If you’re using variables as arguments, try changing these to string literals.

Continue reading

Return the Partition Number for Each Row When Querying a Partitioned Table in SQL Server (T-SQL)

If you’ve got a partitioned table in SQL Server, and you now want to run a query that includes the partition number on each row returned by the query, you can use the $PARTITION system function to do just that.

The $PARTITION function returns the partition number into which a set of partitioning column values would be mapped for any specified partition function.

You can therefore use it in your SELECT statement to return the partition that each row belongs to.

Continue reading