是否可以使用SQL查询连接到另一个SQL Server(以便可以在该服务器上运行查询并在当前服务器中使用结果集)。如果不行,为什么?
是否可以使用SQL查询连接到另一个SQL Server(以便可以在该服务器上运行查询并在当前服务器中使用结果集)。如果不行,为什么?
是的,您可以通过使用链接服务器来连接另一个SQL Server,或者您可以通过使用openquery在服务器之间进行查询:
SELECT * FROM openquery([aa-db-dev01], 'Select * from TestDB.dbo.users')
仅适用于Microsoft SQL Server:
是的,这是可能的。您需要配置一个链接的Microsoft SQL Server。以下是相关信息:http://msdn.microsoft.com/en-us/library/ms188279.aspx
一旦您配置好了服务器,您的查询(在server1上)将如下所示:
SELECT TOP 10 * FROM server2.yourdatabase.yourschema.yourtable
openquery
或链接服务器名称,例如EXEC('Select * FROM ABC') AT LinkdedServerName
。如果您正在通过ODBC连接MSSQL数据库和MySQL数据库,则不知道您的语法是否有效。 - Stefan Brendle如果您有一个需要在两个SQL服务器的数据库上运行才能获得所需结果集(分布式查询)的查询,则不能简单地使用一个查询同时连接到两个不同的SQL服务器。
然后,您必须在本地SQL服务器中创建一个“链接服务器”,将其与第二个SQL服务器(远程SQL服务器)链接起来。
一旦在本地服务器中创建了链接服务器,您就可以使用一个查询从本地服务器的连接查询两个服务器。
链接服务器可以直接查询,也可以使用OPENQUERY查询。
直接链接服务器查询和链接服务器OPENQUERY之间存在性能差异。在直接查询中,整个数据都将从远程服务器返回到本地服务器,然后本地服务器将在本地处理过滤器;而在OPENQUERY中,该过程将在远程服务器上完成,并且本地服务器仅获取经过筛选的数据集。
SELECT CONVERT(sysname, SERVERPROPERTY('servername'));
:Connect CSQL2008
SELECT CONVERT(sysname, SERVERPROPERTY('servername'));
SELECT CONVERT(sysname, SERVERPROPERTY('servername'));
生成:
CSQL2008
CSQL2008
CSQL2008
虽然
select distinct( server_name) from msdb.dbo.backupset
go
:Connect CSQL2012
select distinct( server_name) from msdb.dbo.backupset ;
go
select distinct( server_name) from msdb.dbo.backupset ;
产生:
SQLTEST
CSQL2012
CSQL2012