我有2个远程数据库作为查询的一部分
select p.ID,p.ProjectCode_VC,p.Name_VC,v.*
FROM [serverB].Projects.dbo.Projects_T p
LEFT JOIN [serverA].SOCON.dbo.vw_PROJECT v on
p.ProjectCode_VC = v.PROJ_CODE
Run Code Online (Sandbox Code Playgroud)
问题是serverA使用排序规则Latin1_General_BIN和serverB使用Latin1_General_CP1_CP_AS,并且查询拒绝运行.
两台服务器都是SQL 2000服务器.两个数据库都是一成不变的,所以不幸的是我无法更改它们的排序规则.
无论如何你们都知道如何让它发挥作用吗?
更新: 我找到了另一种解决方案.在"链接服务器属性"中,您可以在那里指定链接服务器的排序规则.
如何连接到链接SQL Server的命名实例.
如果没有链接,我会做以下事情:
ServerName.DatabaseName.dbo.TableName
Run Code Online (Sandbox Code Playgroud)
如果它是链接的,我会假设如下:
ServerName\InstanceName.DatabaseName.dbo.TableName
Run Code Online (Sandbox Code Playgroud)
但SQL不喜欢"\"
什么是正确的语法
我正在尝试使用Linq通过Visual Studio对我们的SQL Server计算机上的链接服务器运行查询.
在SQL Server上,我已成功创建链接服务器并可以对其运行查询.在Visual Studio中,我已成功向SQL Server添加了新的数据连接(在"服务器资源管理器"下),但链接的服务器表不可用.
如何显示链接的服务器表?或者我甚至可以这样做?
我试图执行存储过程并将其结果简单地插入临时表中,并且得到以下消息:
由于链接服务器“ MyServerName”的OLE DB提供程序“ SQLNCLI”无法开始分布式事务,因此无法执行该操作。链接服务器“ MyServerName”的OLE DB提供程序“ SQLNCLI”返回消息“没有事务处于活动状态”。
我的查询如下所示:
INSERT INTO #TABLE
EXEC MyServerName.MyDatabase.dbo.MyStoredProcedure Param1, Param2, Param3
Run Code Online (Sandbox Code Playgroud)
确切的列号,名称,不是问题所在。
两台计算机都允许并启动MSDTC,也调用远程过程。
这些机器不在同一个域中,但是我可以从我的机器上执行远程查询并获得结果。我什至可以执行存储过程并查看其结果,只是不能将其插入另一个表中。
编辑
哦,我忘了提及,存储过程不会触发任何触发器。它仅将记录插入临时表中,并创建临时表以进行数据处理。
我需要执行以下查询(例如):
SELECT c1.CustomerName FROM Customer as c1
INNER JOIN [ExternalServer].[Database].[dbo].[Customer] as c2
ON c2.RefId = c1.RefId
Run Code Online (Sandbox Code Playgroud)
出于某些安全原因,我的客户端不允许我创建链接服务器。我执行此查询的用户可以访问这两个表。是否可以在不使用链接服务器的情况下使其工作?谢谢。
我有一个内联查询,其中我在server1中有一个table1,在server2中有另一个table2.我需要加入这两个表,并获取数据.
我可以这样做,比如连接到一台服务器,获取数据并连接到下一台服务器......获取数据.并加入他们.
但还有其他更好的方法.我听说过Linked服务器.这会有帮助吗?
提前致谢 !!!
我想从另一台服务器中的另一个数据库中选择一些数据.
我所知道的是添加一个链接服务器,并运行T-SQL.
这种方式是一个不错的选择,还是有其他方法在其他数据库服务器中运行SQL?
谢谢.
我在SQL Server 2008 R2中设置了一个链接服务器,以便访问Oracle 11g数据库.MSDASQL提供程序用于通过Oracle Instant Client ODBC驱动程序连接到链接服务器.使用OPENQUERY以下语法时,连接效果很好:
SELECT *
FROM OPENQUERY(LINKED_SERVER, 'SELECT * FROM SCHEMA.TABLE')
Run Code Online (Sandbox Code Playgroud)
但是,我尝试使用以下语法使用四部分名称:
SELECT *
FROM LINKED_SERVER..SCHEMA.TABLE
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
消息7318,级别16,状态1,行1
链接服务器"LINKED_SERVER"的OLE DB提供程序"MSDASQL"为表""SCHEMA"返回了无效的列定义.""表"".
有没有人对我的四部分名称查询失败有什么了解,而OPENQUERY一个工作没有任何问题?
我正在尝试使用此更新链接表...
update openquery (LINKSERVERID, 'select tng_email from user_list where tng_id = 62873')
set tng_email = 'blah@blah.com';
Run Code Online (Sandbox Code Playgroud)
...但是出现以下错误...
链接服务器“ LINKSERVERID”的OLE DB提供程序“ MSDASQL”返回消息“键列信息不足或不正确。太多行受更新影响。”
仅供参考:tng_id是主键。
我该如何解决?
想在 azure sql 中创建链接服务器。我想使用链接服务器在 sql azure 中使用本地数据库视图。有没有可能或者有什么替代方法。欢迎提出所有建议。
linked-server ×10
sql-server ×7
sql ×3
t-sql ×3
azure ×1
fetch ×1
linq ×1
oracle11g ×1
sql-update ×1
sqlncli ×1