是否有一种方法可以防止SQL Server在CREATE / ALTER期间验证存储过程中的SQL ?



我们系统的一个方面要求我们的SQL Server实例通过链接的服务器连接与MySQL服务器通信。

MSSQL -> LinkedServer(MSDASQL ODBC Provider) -> MySQL ODBC Connector -> MySQL DB

在SPROC中沿着

一行调用被链接服务器上的Table。
CREATE PROCEDURE DoStuff
AS
SELECT a.ID, a.Name, b.OtherProperty
FROM   MyDatabase..MyTable a
JOIN   LINKSRVR...OtherTable b
ON     a.ID = b.ID
GO

问题是MySQL数据库在另一个网络上,只能通过VPN访问;除非VPN处于活动状态,否则CREATE或ALTER语句会出现以下错误。

The OLE DB provider "MSDASQL" for linked server "LINKSRVR" reported an error. 
 The provider did not give any information about the error.
Cannot initialize the data source object of OLE DB provider 
"MSDASQL" for linked server "LINKSRVR".

是否有办法强制SQL Server继续使用我告诉它的SQL创建SPROC,而不是尝试验证LinkedServer是否向上/向下?

您必须通过将违规SQL放在字符串中并将其作为动态SQL执行来"隐藏"编译器。

最新更新