2010-03-22 145 views
12

如何在链接服务器数据库上创建视图。例如,我在[5.6.7.8]上有一个关联的服务器[1.2.3.4]。这两个数据库服务器都是SQL Sserver 2005.我想在链接服务器上使用表在[5.6.7.8]上创建View。在SQL Server中使用链接服务器数据库创建视图

编辑:

使用全名,[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周围没有括号,但是我给了它,错误时这些括号被删除。

谢谢。

linkedserver.database.schema.table 

所以,如果您的链接服务器名称为[0.0.0.0],你可以引用:

+0

请发布完整(或更多)的视图创建脚本,以及用于访问视图的代码。 – 2010-03-22 16:51:37

+0

555.555.555.555不是有效的IP地址。每个数字最多可以是255,并且需要是有效的IP地址。例如,您应该可以ping通IP地址:ping 10.1.16.1。通常使用服务器名称而不是IP地址更有意义。 – Ryan 2010-03-23 09:01:43

+1

感谢您的回复。 555.555.555.555不是我使用的IP。我故意改变了这一点。 – Kashif 2010-03-24 08:07:26

回答

16

您需要使用四个部分限定名称: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地址。

+0

感谢您的回复。请看我的编辑。 – Kashif 2010-03-22 16:36:18

2

如果链接的服务器设置,您可以使用四部分限定名称只是引用它的表表:

[0.0.0.0].database.schema.table 
+0

感谢您的回复。请看我的编辑。 – Kashif 2010-03-22 16:32:15

0

您也可以只需将来自链接服务器表/视图对象拖放到你的观点和管理工作室会为你创建的四个部分参考。

+0

在管理工作室中将定义的链接服务器拖放到我的视图中不起作用 - 界面(Management Studio 2008)不允许我拖放。也许有链接服务器中的设置阻止了这一点? – 2012-01-17 15:00:53

0

您需要定义一个链接服务器,然后才能访问它,因为链接服务器条目还包含身份验证信息。

创建链接的服务器后,您可以使用点符号servername.database访问其数据库及其对象。[所有人] .object

10

它是一个SQL Management Studio中问题。 如果您尝试使用management studio NEW VIEW创建视图,那么您将得到错误不正确的语法。

但是如果你使用SQL查询:

CREATE VIEW [dbo].[viewname] 
AS 
    SELECT * 
    FROM [0.0.0.0].database.dbo.table 
GO 

那么它会工作。

要测试您将看到刷新视图时创建的视图。 如果您只是从视图中选择查询,您将看到视图返回结果。

但是,如果您尝试进入该视图的设计模式并尝试执行设计查询,即使视图已成功创建,错误也会再次弹出。

+0

非常感谢。我的链接服务器的名称中有一个连字符,它引发了Management Studio 2005.您的解决方案可以解决此问题。 – 2012-11-15 10:40:19

+0

这是我遇到的问题。我给“未解决的对象”警告太重要了。感谢菲尔。 – Vic 2013-10-14 15:28:27

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

+0

只要您将地址放在方括号中,IP就可以正常工作。 – influent 2013-06-13 19:29:43

+0

好点,谢谢。 – 2013-06-14 16:23:01

+0

这是一个很好的解决方案,可以在您的DNS无法正确解析名称时创建具有别名的de链接服务器。 – EAmez 2017-05-08 11:26:59

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个部分。
已枉过于寻找解决办法。
可以工作的脚本发布在上面的链接中。

相关问题