是否可以使用SQL查询连接到另一个SQL Server(这样一个人也可以在该服务器上运行查询并使用当前服务器中的结果集)。如果没有,那么为什么呢?
答案 0 :(得分:5)
是的,您可以使用链接服务器完成与另一个SQL Server的连接,也可以使用openquery通过服务器进行查询:
SELECT * FROM openquery([aa-db-dev01], 'Select * from TestDB.dbo.users')
答案 1 :(得分:1)
仅限Microsoft SQL Server:
是的,有可能。您必须配置链接的Microsoft SQL Server。以下是信息:http://msdn.microsoft.com/en-us/library/ms188279.aspx
配置完服务器后,您的查询(在server1上)将如下所示:
SELECT TOP 10 * FROM server2.yourdatabase.yourschema.yourtable
答案 2 :(得分:0)
如果您有一个查询需要在2个SQL服务器的数据库上运行才能获得所需的结果集(分布式查询),则不能仅通过一个查询就可以同时连接到2个不同的SQL服务器
然后,您必须必须在本地SQL服务器“链接到” 的第二台SQL服务器中创建一个“链接服务器” 。远程SQL服务器)
在本地服务器中创建链接服务器后,您可以使用本地服务器连接中的一个查询来查询两个服务器。
可以直接 查询链接的服务器,也可以使用 OPENQUERY 。
“ 直接链接服务器查询”和“ 链接服务器OPENQUERY ”之间的性能有所不同,因为在直接查询中,整个数据都将流回本地服务器从远程服务器,然后本地服务器将在本地处理过滤器,而在OPENQUERY中,进程将在远程服务器上完成,而本地服务器将仅获取过滤的数据集>
答案 3 :(得分:-1)
这适用于SQL 2012。 显示在灰色框中 必须在SQL之前运行才能在其他服务器上运行,否则代码将运行在查询窗口所连接的服务器/数据库上。像@@ Servername和SERVERPROPERTY这样的本地变量返回与连接到的服务器相同的结果。哪个是意外的!!!!
:连接服务器名称
从SQLTEST运行的示例
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