我创建了一个linkedserver
作为ravikiran-vm
,这是我桌面上的虚拟机。
现在我有一个名为kiran
的数据库,其中包含一个employ
表
要检索employ
数据,请执行以下操作:
select * from ravikiran-vm.kiran.employ
但它显示错误“' - '附近的语法不正确。”
有人可以帮助我吗?
提前致谢。
非常感谢你们支持它工作得很好...... 现在我要安排这个作为一个新工作。当我正常执行它时,它显示o / p。 但是当我提供与sqlserver代理作业相同的查询时,它会给出错误并且查询不执行... Plz在这方面帮助我
提前致谢
答案 0 :(得分:16)
我认为您应该更改链接服务器的名称,因为 - char在SQL中保留。
您可以尝试用括号括起名称,但它会变得无聊
此外,您应该在查询中包含架构名称,或者双点以使用默认值:
所以,你可以尝试:
select * from [ravikiran-vm].kiran.dbo.employ
select * from [ravikiran-vm].kiran..employ
或者你的架构是什么。
答案 1 :(得分:5)
您必须使用OPENQUERY:
SELECT * FROM OPENQUERY([ravikiran-vm],'SELECT * FROM KIRAN..EMPLOY')
答案 2 :(得分:2)
从链接服务器获取数据,使用4部分表示法 Server.Database.Schema.Table
由于您的姓名( - )中包含无效字符,因此您需要在名称
周围添加括号select * from [ravikiran-vm].kiran..employ
您可能也不希望返回所有数据
答案 3 :(得分:0)
通常直接查询不应该用于链接服务器,因为它大量使用SQL Server的临时数据库。在第一步,将数据检索到临时DB中,然后进行过滤。关于这一点有很多线索。最好使用open OPENQUERY ,因为它将SQL传递给源链接服务器,然后返回过滤后的结果,例如。
SELECT * FROM OPENQUERY(Linked_Server_Name,'select * from TableName,其中ID = 500')
答案 4 :(得分:0)
1- Link the server
EXEC sp_addlinkedserver 'OracleSvr',
'Oracle 7.3',
'MSDAORA',
'ORCLDB'
2-SELECT
SELECT *
FROM OPENQUERY(OracleSvr, 'SELECT name, id FROM albert.titles')
3-UPDATE
UPDATE OPENQUERY (OracleSvr, 'SELECT name FROM albert.titles WHERE id = 101')
4-INSERT
INSERT OPENQUERY (OracleSvr, 'SELECT name FROM albert.titles')
VALUES ('NewTitle');
5-DELETE
DELETE OPENQUERY (OracleSvr, 'SELECT name FROM albert.titles WHERE name = ''NewTitle''')
我刚从这里复制(http://www.sqlservercentral.com/Forums/Topic916320-392-1.aspx)
答案 5 :(得分:0)
Select * from likedservername.databasename.dbo(schema).tablename
Ex1:
select * from [Bse].[Bse].[dbo].Binary
Else
Select * from openquery (linkedservername, 'select * from databasename.dbo(schema).tablename');
Ex2:
select * from openquery ([Bse], 'select * from [Bse].[dbo].Binary');