如何在链接服务器数据库上创建视图。例如,我在[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周围没有括号,但我给出了它,如果错误,这些括号将被删除。
感谢。
答案 0 :(得分:20)
您需要使用四部分限定名称:linkedserver.database.schema.table
SELECT * FROM [1.2.3.4].Northwind.dbo.Customers
以下是关于accessing object names的MSDN文章。
您可能希望尝试手动创建视图,而不是使用SQL管理工具:
CREATE VIEW [dbo].[sywx]
AS
SELECT *
FROM [1.2.3.4].Atia.dbo.IpPbxDCR
GO
我还建议您为链接服务器使用名称(如果可能),而不是使用IP地址。
答案 1 :(得分:12)
它是一个SQL Management Studio问题。 如果您尝试使用管理工作室NEW VIEW创建视图,那么您会得到错误的语法错误。
但是如果你使用SQL Query:
CREATE VIEW [dbo].[viewname]
AS
SELECT *
FROM [0.0.0.0].database.dbo.table
GO
然后它会起作用。
要测试,您将看到刷新视图时创建的视图。 如果您只是从视图中执行选择查询,您将看到视图返回结果。
但是如果您尝试进入该视图的设计模式并尝试执行设计查询,即使视图已成功创建,也会再次弹出错误。
答案 2 :(得分:2)
如果设置了链接服务器,则只需使用由四部分限定的名称引用其上的表:
linkedserver.database.schema.table
因此,如果链接服务器名称为[0.0.0.0],则可以将表引用为:
[0.0.0.0].database.schema.table
答案 3 :(得分:2)
您的主要问题是使用数字(IP地址)命名您的链接服务器。对我有用的唯一方法是使用字母名称为我的链接服务器,没有任何点'。' 您可以使用以下代码行添加链接服务器和身份验证:
EXEC sp_addlinkedserver
@server='TEST_LINK',
@srvproduct='',
@provider='SQLNCLI',
@datasrc='tcp:0.0.0.0'
EXEC sp_addlinkedsrvlogin
@useself='FALSE',
@rmtsrvname='TEST_LINK',
@rmtuser='user',
@rmtpassword='secret'
您可以找到原始答案here
答案 4 :(得分:1)
对于使用Web服务名称句点的链接服务器 - 这不起作用
代码详细信息和差异步骤发布在:
http://www.access-programmers.co.uk/forums/showthread.php?t=260764
例如
FROM [V2.EGG.COM]..[NAT_DBA].[NV_WELLS]
在SSMS 2008中,编辑器删除了[V2.EGG.COM] ..周围的方括号。然后更新失败,因为它超过4个部分
徒劳无功地寻找解决办法
有效的脚本发布在上面的链接中。
答案 5 :(得分:0)
您也可以将表/视图对象从链接服务器拖放到视图中,Management Studio将为您创建四部分参考。
答案 6 :(得分:0)
您需要先定义链接服务器,然后才能访问它,因为链接服务器条目还包含身份验证详细信息。
创建链接服务器后,您可以使用点表示法servername.database访问其数据库及其对象。[owner] .object