Executing Queries
This section describes how to execute queries to the Salesforce linked server from any tool that can connect to SQL Server.
When executing queries from a linked server, use a two-part name, in the format:
[<Linked Server Name>].[<DSN Name>].[<Schema Name>].[<Table Name>]where
- Linked Server Name is the name of the linked server that you created. This is normally the service name.
- DSN Name is the name of the data source.
- Schema Name is the name of the system schema or user-defined schema.
- Table Name is the name of the table you are copying data from.
SELECT Statements
To create new records:SELECT * FROM [Linked Server Name].[CData Sage50UK Sys].[Sage50UK].[TradingAccounts] WHERE TradingAccountUUID = 'c2ef66a5-a545-413b-9312-79a53caadbc4'Note: If the data source supports case-sensitive identifiers, it is not possible to query tables of the same name that only vary by casing (ex: Account and ACCOUNT in the same schema). This is due to the fact that SQL Server treats identifiers as case-insensitive, so multiple tables of the same name in a single schema are incompatible with the SQL Server protocols.
INSERT, UPDATE, and DELETE Statements
To insert, update, or delete a single row of data against a writeable database, use the four-part name. For example:
INSERT INTO [Linked Server Name].[CData Sage50UK Sys].[Sage50UK].[TradingAccounts] (TradingAccountUUID) VALUES ('c2ef66a5-a545-413b-9312-79a53caadbc4');
Bulk Operations
To perform bulk operations against data sources that permit writes, use syntax similar to the following:To run a bulk INSERT using a SELECT query in place of a VALUES list:
INSERT INTO [Linked Server Name].[CData Sage50UK Sys].[Sage50UK].[TradingAccounts] ([TradingAccountUUID]) SELECT [TradingAccountUUID] from [CData].[dbo].[Local_TradingAccounts]To run a bulk UPDATE using a JOIN with a local table:
UPDATE [Linked Server Name].[CData Sage50UK Sys].[Sage50UK].[TradingAccounts] SET [TradingAccounts].[TradingAccountUUID] = CData.dbo.[Local_TradingAccounts].[Local_TradingAccountUUID] FROM CData.dbo.[Local_TradingAccounts] INNER JOIN [Linked Server Name].[CData Sage50UK Sys].[Sage50UK].[TradingAccounts] ON CData.dbo.[Local_TradingAccounts].[TradingAccountUUID] = [TradingAccounts].[TradingAccountUUID]To run a bulk DELETE using the IN filter with sub-SELECT query.
DELETE FROM [Linked Server Name].[CData Sage50UK Sys].[Sage50UK].[TradingAccounts] WHERE [TradingAccountUUID] IN (SELECT [TradingAccountUUID] FROM CData.dbo.Local_TradingAccounts)
Execute Stored Procedures
Before you can execute stored procedures, you must first enable RPC and RPC Out for the linked server. To do this, right-click the linked server, navigate to Properties > Server Options , and set RPC and RPC Out to True.
After RPC and RPC Out are enabled, use these commands to run the stored procedure:
DECLARE @RunStoredProcSQL VARCHAR(1000); SET @RunStoredProcSQL = 'EXEC SelectEntries ObjectName=''Account'''; EXEC (@RunStoredProcSQL) AT [Linked Server Name];