问题标签 [linked-server]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
32364 浏览

sql-server - 使用 sql server 查询远程数据库?

我已经使用 sp_addlinkedserver 来访问远程计算机数据库,现在我正在数据库上显式编写查询,例如,

从 [server\instance].database.owner.tablename 中选择 *

现在有了这个,

  1. [Server\instance] :必须明确提供
  2. [数据库]:我们可以使用 ms_ForEachDB 之类的查询在指定实例上查找数据库吗?
  3. [所有者]:我们可以使用查询找到数据库所有者名称吗?

如果使用查询找到这些值,我们是否需要使用 EXEC() 来执行它,或者我们仍然可以使用不错的查询来实现它?

谢谢大家,

0 投票
1 回答
18801 浏览

sql-server - SQL Server 错误:“最大前缀数。最大值为 3”,带有子选择语法

尝试运行跨服务器更新:

给出错误:

是什么赋予了?


注意:将查询重新排列为可读性较差的联接形式:

不给出错误。

也可以看看

0 投票
1 回答
7277 浏览

sql-server - 如何优化简单的链接服务器选择查询?

我有一个名为Table的表,其中包含列:

  • ID(int,主键,聚集,唯一索引)
  • 文本(varchar 15)

在名为LS的 MSSQL 链接服务器上。链接服务器位于同一台服务器计算机上。和:

当我打电话时:

它需要400 毫秒

当我打电话时:

需要200 毫秒

当我在 LS 服务器上直接调用查询时:

它需要100 毫秒

在许多地方,我读到 OPENQUERY 更快,但在这种简单的情况下,它似乎不起作用。当我从另一台服务器而不是 LS 直接调用它时,我能做些什么来使这个查询更快?

0 投票
1 回答
50 浏览

sql-server - SQL Server 2000 是否能够通过跨链接服务器的视图联合使用视图中的索引

我有以下情况:

2个数据库服务器(相互链接)

DB1 有一个(大)表,其中包含事务记录 DB2 有一个(还没有那么大)表,其中包含事务记录(性质相似但没有一些数据,因为它是一个不同的系统)从 DB1 中的事务表中记录出来,并将它们与 DB1 中的许多表连接起来。

我可以使用 DB1 中的数据使 DB2 中的数据看起来像 DB1 中的数据。

如果我在 DB1 中创建一个视图,该视图从 DB2 中提取事务数据并将其与来自 DB1 的数据连接起来,以具有与 DB1 中的事务数据相同的列,然后创建另一个视图,将 DB1 中的所有数据和第一个数据合并视图,针对第二个视图的查询是否仍会利用 DB1 和 DB2 中事务数据的任何索引?

或者有没有更好的方法将数据从新系统改造到旧系统,以便旧报告可以报告新数据?

0 投票
1 回答
2141 浏览

tsql - 从链接服务器传输表数据的更快方法

经过一番折腾,我设法安装了正确的 ODBC 驱动程序,并在 SQL Server 2008 上成功创建了一个链接服务器,通过它我可以从 SQL 服务器访问我的 PostgreSQL 数据库。

我正在使用以下形式的合并语句将 PgSQL DB 中的某些表中的所有数据复制到 SQL Server 中:

此语句完成后,本地(SQL Server)副本与远程(PgSQL 服务器)完全同步。

关于这种方法的几个问题:

  1. 理智吗?
  2. 令我震惊的是,更新将在本地行中不一定更改的所有字段上运行。唯一的先决条件是本地和远程 id 字段匹配。是否有更细粒度的方法/一种将合并语句限制为仅更新实际更改的行的方法?
0 投票
7 回答
79080 浏览

sql - 在 SQL Server 中使用链接服务器数据库创建视图

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

编辑:

在使用全名 [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 投票
2 回答
3990 浏览

sql-server - 尝试使用 SQL Server 2005 中的链接服务器不工作

我试图捕获在链接服务器上执行存储过程时引发的 sql 错误。两台服务器都运行 SQL Server 2005。

为了证明这个问题,我在链接服务器上创建了一个名为 Raise error 的存储过程,它执行以下代码:

如果我使用以下代码直接在链接服务器上执行存储过程,我会得到一个结果集,如预期的那样 'An error', '16' (即代码进入 catch 块):

如果我在本地服务器上运行以下代码以在链接服务器上执行存储过程,则 SSMS 会给我消息“查询完成但出现错误”,.Msg 50000,级别 16,状态 1,过程 RaiseError,第 13 行错误“

我的问题是我可以捕捉到链接服务器存储过程执行时产生的错误吗?

提前致谢!

0 投票
3 回答
28957 浏览

sql-server - 如何引用名称中带有反斜杠 (\) 的 sql server?

吉文斯:

  • 一个 SQL Server 被命名为:DevServerA
  • 另一个被命名为:DevServerB\2K5

问题:

DevServerA,我如何编写引用的查询DevServerB\2K5

我尝试了一个示例,虚拟查询(从运行它DevServerA):

我得到了错误:

但是,我知道我的语法几乎是正确的,因为反过来也可以(从 运行此查询DevServerB\2K5):

请帮我弄清楚如何DevServerB\2K5DevServerA. 谢谢。

0 投票
1 回答
1490 浏览

sql-server - 如何通过两个链接服务器上的存储过程调用获取结果集?

我在使用链接服务器上的过程调用的结果集填充临时表时遇到问题,其中再次调用了另一台服务器上的过程。

我有一个带有以下代码的存储过程 sproc1,它调用链接服务器上的另一个过程 sproc2。

现在在被调用的 sproc2 中,我再次调用另一个链接服务器上的第三个过程 sproc3,它返回我的结果集。

整个事情都不起作用,因为我收到一个 SQL 错误 7391

无法执行该操作,因为链接服务器“%ls”的 OLE DB 提供程序“%ls”无法开始分布式事务。

我已经检查了这篇微软文章的提示,但没有成功。但也许,我可以更改 sproc1 中的代码。临时表和开放查询是否有替代方案?

只需从服务器 A 到 B 到 C 调用存储过程并返回结果集即可(我经常在应用程序中这样做)。但是这种临时表和 openquery 的特殊情况不起作用!

还是我想做的事情不可能?微软的文章指出:

检查您在目标服务器上引用的对象。如果它是视图或存储过程,或者导致执行触发器,请检查它是否隐式引用另一个服务器。如果是这样,第三台服务器就是问题的根源。直接在第三台服务器上运行查询。如果您不能直接在第三台服务器上运行查询,则问题实际上不在于链接服务器查询。先解决根本问题。

这是我的情况吗?

PS:我无法避免使用三台服务器的架构。

0 投票
1 回答
807 浏览

sql-server-2005 - ODBC Linked server in sql 2005 doesn’t work from remote box

I have a dev workstation with sql 2005 installed and in it I created a linked server to a odbc connection to a clarion database. I can run select statements against it inside sql Mgt studio. When I take a second workstation and connect to the sql on the first box using sql mgt studio, then try the exact same query I get

OLE DB provider "MSDASQL" for linked server "liveclarion" returned message "[SoftVelocity Inc.][TopSpeed ODBC Driver][ISAM]ISAM Table Not Found".

Any thoughts? It appears to have the same functionality on a second sql server. No remote sql mgt studio connect success in queries against my linked ODBC clarion DB.

All done with windows authentication and the same AD user.