标签: linked-server

在列名SQL Server中选择具有句点的列

我链接到Proficy Historian,它允许列名称中包含句点.因为数据以非DBMS格式存储,所以我不能openquery用来获取数据,因为表没有设置模式.所以我必须使用四部分名称语法来获取数据.这个例子有效:

SELECT * FROM iHist...[SELECT * FROM ihTrend]
Run Code Online (Sandbox Code Playgroud)

但是在'.'附近的语法不正确.

SELECT * FROM iHist...[SELECT [SERVER.pid_astatus[07][0].F_CV.Value] FROM ihTrend]
Run Code Online (Sandbox Code Playgroud)

SERVER.pid_astatus[07][0].F_CV.Value列的名称在哪里

这也与关键字'from'附近的语法错误一致.

SELECT * FROM 
    iHist...[SELECT [SERVER.pid_astatus[[07]][[0]].F_CV.Value] from ihTrend]`
Run Code Online (Sandbox Code Playgroud)

关于如何让SQL Server将其视为列的任何想法?

编辑:

Martins建议右括号转义括号只能在sql调用的外部工作

SELECT [SERVER.pid_astatus[07]][0]].F_CV.Value] FROM iHist...[SELECT * FROM ihTrend] 
Run Code Online (Sandbox Code Playgroud)

但是它在关键字'from'附近的不正确语法中不起作用.

SELECT * FROM iHist...[SELECT [SERVER.pid_astatus[07]][0]].F_CV.Value] FROM ihTrend]
Run Code Online (Sandbox Code Playgroud)

编辑

SELECT * FROM iHist...[SELECT [SERVER.pid_astatus[07]][0]].F_CV.Value]] FROM ihTrend] 
Run Code Online (Sandbox Code Playgroud)

我不得不逃脱列逃脱:)

sql sql-server linked-server historian

4
推荐指数
1
解决办法
3420
查看次数

SQL Server错误:最大前缀数.使用连接语法,最大值为3.

尝试运行跨服务器更新:

UPDATE ASILIVE.CustomerManagementSystem.dbo.Sessions
SET ASILIVE.CustomerManagementSystem.dbo.Sessions.VarianceAmount=Variances.VarianceAmount
FROM ASILIVE.CustomerManagementSystem.dbo.Sessions
    INNER JOIN Variances
    ON ASILIVE.CustomerManagementSystem.dbo.Sessions.SessionGUID = Variances.SessionGUID
WHERE ASILIVE.CustomerManagementSystem.dbo.Sessions.VarianceAmount <> Variances.VarianceAmount
Run Code Online (Sandbox Code Playgroud)

给出错误:

Msg 117, Level 15, State 2, Line 5
The number name 'ASILIVE.CustomerManagementSystem.dbo.Sessions' contains 
more than the maximum number of prefixes. The maximum is 3.
Run Code Online (Sandbox Code Playgroud)

是什么赋予了?


也可以看看


不重要的研究:

我试着随意别名s:

UPDATE ASILIVE.CustomerManagementSystem.dbo.Sessions s
SET s.VarianceAmount=Variances.VarianceAmount
FROM ASILIVE.CustomerManagementSystem.dbo.Sessions s
    INNER JOIN Variances
    ON s.SessionGUID = Variances.SessionGUID
WHERE s.VarianceAmount <> Variances.VarianceAmount
Run Code Online (Sandbox Code Playgroud)

但这不起作用:

Msg 117, Level 15, …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2000 linked-server

4
推荐指数
2
解决办法
8758
查看次数

如何在TSQL中测试linkedserver的连接性

我需要编写一个过程来从几个远程服务器收集数据,

我使用链接服务器和OPENQUERY从服务器收集数据,但有时我失去了与某些服务器的连接,或者我根本无法连接它们(例如远程服务器处于脱机状态) - 并且在这些情况下OPENQUERY会导致超时.

所以我想首先检查链接服务器连接,然后如果它成功运行查询,如果不是只是移动到下一个远程服务器.

我试图将OPENQUERY置于TRY - CATCH但它仍然返回我超时错误,sp_testlinkedserver程序也返回了我超时错误.

我真的很感激任何帮助.

sql t-sql connection linked-server openquery

4
推荐指数
1
解决办法
2万
查看次数

如何查询多个链接服务器?

链接一些 SQL Server 2008 服务器/实例后,我想对这些服务器进行更通用的查询。我知道我必须像这样指定查询的命运:

select * 
from [SRV\INSTANCE].dbname.dbo.foo
Run Code Online (Sandbox Code Playgroud)

但是,我会针对多个链接服务器运行此查询。我也知道这个 select 语句返回的正是SRV\INSTANCE我需要的:

select ss.name 
from sys.servers ss 
where ss.server_id > 0
Run Code Online (Sandbox Code Playgroud)

这个,servers\instances从我想要查询的地方返回所有内容。

在这种情况下,所有数据库都具有相同的结构,所以我想做这样的事情:

select * 
from [select ss.name from sys.servers ss where ss.server_id > 0].DBNAME.dbo.foo
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

提前致谢。

sql linked-server sql-server-2008 multiserver

4
推荐指数
1
解决办法
5992
查看次数

sql链接服务器连接查询

我在使用链接服务器的DB加入本地数据库时遇到任何问题.

我的查询:

SELECT 

        [LocalDatabase].[dbo].[Record].[Project_ID],
        [LinkedServer].[Reporting].[dbo].[Active].[Name]

        FROM [LocalDatabase].[dbo].[Record] inner join 
             [LinkedServer].[Reporting].[dbo].[Active] ON
             [LocalDatabase].[dbo].[Record].[Project_ID] = [LinkedServer].[Reporting].[dbo].[Active].[Delivery_Number]
Run Code Online (Sandbox Code Playgroud)

错误:

Msg 4104, Level 16, State 1, Line 9
The multi-part identifier "LinkedServer.Reporting.dbo.Active.Delivery_Number" could not be bound.
Msg 4104, Level 16, State 1, Line 5
The multi-part identifier "LinkedServer.Reporting.dbo.Active.Name" could not be bound.
Run Code Online (Sandbox Code Playgroud)

我猜我的语法不正确,但我无法修复它.有人可以建议一个解决方案?

如果有更好的解决方案让我在不同服务器上的2个数据库上运行select查询,请提及它.

sql linked-server sql-server-2008

4
推荐指数
1
解决办法
2万
查看次数

链接服务器在SQL Server作业上失败

我有一个链接服务器,在执行查询时非常有效.但是当我将查询放在作业中时,它会失败.

这是我的链接服务器的设置

设置

错误

错误 在此输入图像描述

sql sql-server jobs linked-server

4
推荐指数
1
解决办法
6456
查看次数

重命名 SQL Server 主机后更新 sys.servers

我即将将我的 SQL Server 2012 实例升级到 SQL Server 2014。

我已经克隆了主机的Windows虚拟机,并从它改名foo-2012foo-2014。重新启动时,SQL Server 实例注意到它更新了自己的名称,因此我现在可以以foo-2014. 都好。

不幸的是,(单个)条目sys.servers仍然是foo-2012这意味着运行

SELECT * 
FROM [foo-2012].[barDB].[dbo].tFooBarTable
Run Code Online (Sandbox Code Playgroud)

失败:

在 sys.servers 中找不到服务器“RW-DB-2014”。验证是否指定了正确的服务器名称。如有必要,请执行存储过程 sp_addlinkedserver 将服务器添加到 sys.servers。

美好的。

我运行EXEC sp_addlinkedserver 'foo-2014', 'SQL Server'并获得一个条目。

但是现在新条目具有isLinked=1(而现有条目具有isLinked=0)。

文档表明此设置很重要(特别是对于我的应用程序,它对 Distr.Trans 有很强的意见。:()

我无法直接编辑/添加/修改 sys.servers。任何这样做的尝试都会给出:

不允许对系统目录进行临时更新。

我删除了EXEC sp_dropserver 'foo-2014'成功的新条目 ( ),并尝试使用EXEC sp_addserver 'foo-2014', 'local'which 报告

服务器 'foo-2014' 已经存在

立即重新运行 drop 然后报告

服务器“RW-DB-2014”不存在。使用 sp_helpserver 显示可用的服务器。

我该如何解决?

sql-server rename linked-server

4
推荐指数
1
解决办法
7185
查看次数

从SQL Server链接服务器调用Oracle函数

我已经设置了一个指向Oracle DB的链接服务器.我想在包XYZ传递参数K中调用函数ABC.这样做的语法是什么?

sql-server oracle linked-server

3
推荐指数
1
解决办法
1万
查看次数

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

我已经使用sp_addlinkedserver访问远程机器db现在我在数据库上显式编写查询,如,

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

有了这个,

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

如果使用查询我们是否需要使用EXEC发现这些值()来执行,否则我们仍然可以使用nice查询实现的呢?

谢谢大家,

t-sql sql-server linked-server

3
推荐指数
1
解决办法
3万
查看次数

使用链接服务器进行非常慢的SQL更新

我有一个在服务器上运行的sql脚本(ServerA)这个服务器有一个链接服务器设置(ServerB) - 它位于数据中心的站点外.

此查询相对较为有效:

SELECT OrderID
FROM [ServerB].[DBName].[dbo].[MyTable]
WHERE Transferred = 0
Run Code Online (Sandbox Code Playgroud)

但是,使用此查询更新同一个表时:

UPDATE [ServerB].[DBName].[dbo].[MyTable]
SET Transferred = 1
Run Code Online (Sandbox Code Playgroud)

完成需要> 1分钟(即使只有1列Transferred = 0)

有什么理由会这么慢吗?我应该在MyTable上为"已转移"列添加索引吗?

sql sql-server linked-server

3
推荐指数
1
解决办法
7872
查看次数