我有 2 台装有 SQL Server 2008 R2 的服务器:INT& CRM。
我需要在 上运行一个 SSIS 包INT,它使用来自INT数据库和CRM数据库的数据。慢得令人痛苦。
我试过这个来测试一个简单的查询(上INT):
EXEC sp_addlinkedserver @server='CRM',
@srvproduct='',
@provider='SQLNCLI',
@datasrc='<IP of CRM>'
EXEC sp_addlinkedsrvlogin
@useself='FALSE',
@rmtsrvname='CRM',
@rmtuser='<username>',
@rmtpassword='<userpassword>'
Run Code Online (Sandbox Code Playgroud)
我还在服务器<username>上赋予了ddl_admin 角色CRM,如此答案中所建议的:
跨链接服务器远程查询的 SQL 性能问题
然后我运行这个查询:
UPDATE [CRM].DB.dbo.table1
SET field = 1
WHERE id = (SELECT id FROM [CRM].DB.dbo.table2 WHERE secondary_id = 9999)
Run Code Online (Sandbox Code Playgroud)
此查询在CRM自身运行时需要 40 毫秒才能运行。在上面的例子中运行需要 30 秒。没有返回结果,不可能是网络问题,为什么要这么长时间?