我有一个SQL Server实例,我已经将链接服务器添加到另一个SQL实例.我在链接服务器上访问的表包含空间类型.当我尝试查询表时,我收到一个错误:
在分布式查询中不允许使用CLR类型公开列的对象.请使用传递查询来访问远程对象.
如果我使用OPENQUERY相同的查询,我会收到另一个错误:
当前命令发生严重错误.结果(如果有的话)应该被丢弃.
有没有办法通过链接服务器查询包含空间类型的表?
我试图在Oracle服务器上从MS SQL Server运行openrowset.
当我执行以下命令时:
select * from
OPENROWSET('OraOLEDB.Oracle','srv';'user';'pass',
'select * from table')
Run Code Online (Sandbox Code Playgroud)
发生以下错误
Msg 7302, Level 16, State 1, Line 1
Cannot create an instance of OLE DB provider "OraOLEDB.Oracle" for linked server "(null)".
Run Code Online (Sandbox Code Playgroud)
谁能告诉我如何使用openrowset OraOLEDB.Oracle?
我使用的是64位版本的MS SQL Server和Oracle OLEDB驱动程序.
我在运行带有MS SQL Server 2008 x64的Windows 7 x64和Windows Server 2008 x64的两台计算机上尝试过此操作.两者都显示相同的错误消息.
sql-server oracle oledb linked-server windows-authentication
我已经尝试过,并且无法联系到.我可以使用SSMS连接到服务器,但无法从本地服务器链接到它.这是我的脚本(用括号替换相关信息):
EXEC master.dbo.sp_addlinkedserver
@server = N'[servername].database.windows.net',
@srvproduct = N'Any',
@provider = N'MSDASQL',
@datasrc = N'Azure_ODBC1'
GO
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname = N'[servername]',
@useself = N'False',
@locallogin = NULL,
@rmtuser = N'[username]',
@rmtpassword = '[password]'
GO
Run Code Online (Sandbox Code Playgroud)

我目前正在运行第三方软件套件,它使用SQL Server作为其数据库.我有一个在不同位置运行的第二个SQL Server实例,我在该实例中构建的一些应用程序SQL Server需要访问第三方软件中的某些数据.因此,我在框之间创建了一个ODBC连接,并在我的SQL Server版本上将第三方SQL服务器设置为链接服务器.作为测试,我从我的SQL服务器运行以下语句,访问第三方表之一:
SELECT * FROM LinkedServerName.SchemaName.dbo.TableName
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
OLE DB error trace [Non-interface error: Column 'TableRowVersion' (compile-time
ordinal 4) of object '"SchemaName"."dbo"."TableName"' was reported to have a
DBCOLUMNFLAGS_ISROWVER of 0 at compile time and 512 at run time].
Msg 7356, Level 16, State 1, Line 1
OLE DB provider 'MSDASQL' supplied inconsistent metadata for a column. Metadata
information was changed at execution time.
Run Code Online (Sandbox Code Playgroud)
对于我尝试访问的任何其他表,此错误都是相同的.这个错误意味着什么,是否有办法绕过它?
SQL Server 2008链接服务器和临时INSERT导致快速内存泄漏,最终导致服务器无响应,并以以下错误结束:
Msg 701, Level 17, State 123, Server BRECK-PC\SQLEXPRESS, Line 2
There is insufficient system memory in resource pool 'internal' to run this
query.
Location: qxcntxt.cpp:1052
Expression: cref == 0
SPID: 51
Process ID: 1880
Run Code Online (Sandbox Code Playgroud)
在重新启动SQL Server之前,服务器仍然没有响应.
使用的软件:
Windows Vista Ultimate 64位构建6001 SP1
Microsoft SQL Server 2008(SP1) - 10.0.2734.0(X64)2009年9月11日14:30:58版权所有(c)1988-2008 Microsoft Corporation在Windows NT 6.0上具有高级服务(64位)的Express Edition(Build 6001:Service包1)
SQL Anywhere 11.0.1.2276中的SAOLEDB.11驱动程序
将最大服务器内存(MB)设置为2048没有帮助.
将各种-g值(例如,-g256;)添加到服务器启动参数没有帮助.
使用DBCC FREESYSTEMCACHE('ALL'),DBCC FREESESSIONCACHE和DBCC FREEPROCCACHE没有帮助.
将Cumnulative更新包4安装到SQL Server 2008 Service Pack 1没有帮助,即使它包含对涉及链接服务器使用的内存泄漏症状的修复.
从INSERT中分离SELECT ... ROW_NUMBER()OVER ...查询没有帮助.实验表明复杂的SELECT没有引起内存泄漏,INSERT就是这样.
更改代码以使用ad-hoc"INSERT INTO OPENROWSET"语法而不是链接服务器没有帮助; 下面的代码显示了链接的服务器用法. …
如何在链接服务器数据库上创建视图.例如,我在[5.6.7.8]上有一个链接服务器[1.2.3.4].两个数据库服务器都是SQL Sserver 2005.我想使用链接服务器上的表创建[5.6.7.8]上的View.
编辑:
在使用全名创建[1.2.3.4] .db.dbo.table时,我收到此错误.
SQL执行错误.
执行的SQL语句:SELECT*FROM 1.2.3.4.db.dbo.table (你可以看到括号不存在.) 错误来源:.Net SqlClient数据提供程序错误消息:'0.0'附近的语法不正确.--->部分IP地址.
我只是在ManagementStudio中创建它,而不是使用它,因为它尚未创建.我改变了IP.在图像中,您可以看到IP周围没有括号,但我给出了它,如果错误,这些括号将被删除.
谢谢.
吉文斯:
DevServerA DevServerB\2K5问题:
从DevServerA,如何编写引用的查询DevServerB\2K5?
我尝试了一个示例,虚拟查询(从中运行DevServerA):
SELECT TOP 1 *
FROM DevServerB\2K5.master.sys.tables
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Msg 102, Level 15, State 1, Line 2
Incorrect syntax near '\.'.
Run Code Online (Sandbox Code Playgroud)
但是,我知道我的语法几乎是正确的,因为反过来工作(运行此查询DevServerB\2K5):
SELECT TOP 1 *
FROM DevServerA.master.sys.tables
Run Code Online (Sandbox Code Playgroud)
请帮我找出如何引用DevServerB\2K5的DevServerA.谢谢.
我在SQL Server 2008 R2中有一个Oracle链接服务器.我需要执行Oracle存储过程(首先使用输出参数,然后在第二个过程中使用输入参数):
CREATE OR REPLACE PROCEDURE my1.spGetDate(CurrentDate OUT VARCHAR2)
IS
BEGIN
-- set output parameter, no select statements
END;
CREATE OR REPLACE PROCEDURE my1.spDeleteOldRecords(CurrentDate IN VARCHAR2)
IS
BEGIN
-- conditional delete from oracle table, no select statements
END;
Run Code Online (Sandbox Code Playgroud)
我没有找到关于这个问题的任何完整文档,只有简单的例子与无参数选择/非选择程序,并想知道,如何调用这些程序,程序选择内部,多参数程序与基本参数类型.
我最近将我们的SQL Server从2005升级到2014年(链接服务器),我注意到调用exec命令执行升级后的链接服务器上的存储过程的存储过程之一失败并出现错误
无法在sys.servers.Verify中找到指定了正确服务器名称的服务器"服务器名称".如有必要,执行存储过程sp_addlinkedserver以将服务器添加到sys.servers.
问题是链接服务器存在,我已经完成测试,以确保我可以从链接服务器查询表.以下是我检查链接服务器是否配置正确的检查.
- select name from sys.servers -- > Lists the linked server
- select top 10 * from linkedserver.database.dbo.table --> Gets top 10 records
- exec linkedserver.database.dbo.storedproc --> Executes the stored procedure (I created a test stored procedure on the linked server and I can execute it)
Run Code Online (Sandbox Code Playgroud)
然而,失败的错误是在下面
exec linkedserver.database.dbo.failing_storedprocedure @id,'load ','v2',@file_name, @list_id = @listid output;
Run Code Online (Sandbox Code Playgroud)
我重新创建了链接服务器并启用了RPC.我已经为存储过程授予了执行权限.我可以在链接服务器上选择记录并执行其他存储过程,但上面的exec失败(它在升级之前有效).SQL Server 2005和SQL Server 2014之间是否存在导致此失败的语法差异?
sql sql-server stored-procedures linked-server sql-server-2014
我试图在链接服务器上调用用户定义函数(UDF):
CREATE FUNCTION [dbo].[UserGroupMembershipNames](@UserGUID uniqueidentifier)
RETURNS VARCHAR(8000)
AS
BEGIN
RETURN ASILIVE.ReportManager.dbo.UserGroupMembershipNames(@UserGUID)
END
Run Code Online (Sandbox Code Playgroud)
这不起作用,如PRB中所述:四部分链接服务器查询中的用户定义函数调用失败,错误消息170.他们还给出了一个解决方法:
例如,而不是以下查询
Run Code Online (Sandbox Code Playgroud)Select * from Linked_Server.northwind.dbo.square_value(10)使用Openquery函数运行查询:
Run Code Online (Sandbox Code Playgroud)Select * from Openquery(Linked_Server,'select northwind.dbo.square_ value(10)')如果用户定义的函数采用变量或标量参数,则可以使用sp_executesql存储过程来避免此行为.例如:
Run Code Online (Sandbox Code Playgroud)exec Linked_Server.northwind.dbo.sp_executesql N'SELECT northwind.dbo.square_value(@input)',N'@input int',@input=10
我如何将这种解决方法应用于我的情况,以及这个人的情况?
换一种说法:
如何在链接服务器上调用UDF?
sql-server sql-server-2000 linked-server user-defined-functions
linked-server ×10
sql-server ×7
oledb ×3
sql ×3
oracle ×2
memory-leaks ×1
odbc ×1
server ×1
spatial ×1
t-sql ×1