标签: linked-server

如何在 SQL Server 2008 中查找链接服务器的目标 IP 地址?

如何在 SQL Server 2008 中找到定义的链接服务器的地址?链接服务器存在,其连接测试显示没有问题。但我找不到链接服务器连接到的位置。该属性框并没有导致问题的答案。

谢谢你。

sql sql-server linked-server

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

如何使 WHERE 子句不区分大小写:从 SQL Server 查询 Oracle 链接服务器

我们有一个MS SQL Server 2005安装,它通过链接服务器连接连接到Oracle数据库。

许多 SELECT 语句是通过一系列OPENQUERY()命令执行的。大多数这些语句中的 WHERE 子句都是针对VARCHAR列的。

我听说如果 WHERE 子句区分大小写,它会对性能产生很大影响。

所以我的问题是,如何确保以不区分大小写的方式执行非二进制字符串 WHERE 子句以获得最大性能?

sql-server oracle linked-server case-insensitive openquery

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

如何正确触发对链接sql服务器的插入?

我在两个不同的sql服务器(一个是SqlServer 2000,另一个是2008)中有相同的表。

我正在使用 sql server Management Studio。

我希望每次在 SqlServer 2000 表(Table_1)中的表上进行插入时,都会发生触发器,并且记录也会被插入到 SqlServer 2008 表(也是 Table_1)中的同一个表中。

sql server 2008 被定义为链接服务器,可以使用 sql server management studio 从 2000 db 连接运行查询并在 2008 db 上执行插入。

触发器定义如下:

ALTER TRIGGER [dbo].[trgrTable] 
   ON  [dbo].[Table_1]
   AFTER INSERT
AS 
BEGIN

 INSERT INTO [TLVSQL].[AVI_DEV].[dbo].[Table_1](ID, Value)
      SELECT INSERTED.ID AS ID, INSERTED.Value AS Value
      FROM INSERTED

END
Run Code Online (Sandbox Code Playgroud)

[TLVSQL].[AVI_DEV]是 2008 年的数据库名称。

但是每次我在 2000 表上执行插入时,我都会收到一条消息,指出插入由于“sqloledb 无法启动分布式事务链接服务器...”而无法提交。

链接服务器的安全委托已明确定义,我将安全凭证显式设置为 db_owner 的用户/密码。

我究竟做错了什么 ?还有另一种方法可以完成我的要求吗?

谢谢。

sql sql-server triggers linked-server sql-server-2008

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

Excel从Sql Server获取外部数据:重新排列Excel列顺序

我使用以下列顺序创建了一个viewson sql server:

当我选择视图时,下面是列的顺序 vwTable

Shift_id | Client_ip | Machine_Center
Run Code Online (Sandbox Code Playgroud)

但是当我要从excel中选择views使用时get external data:

SELECT * FROM vwTable
Run Code Online (Sandbox Code Playgroud)

列的顺序EXCEL不相同,输出为:

Machine_Center | Client_ip | Shift_id
Run Code Online (Sandbox Code Playgroud)

截图:

来自SSMS:

Select * from vwTable
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

来自excel:获取外部数据

Select * from vwTable
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我的问题是列顺序必须相同 views

sql-server linked-server export-to-excel

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

使用 OpenQuery 插入表

我有两个数据库MSSQLMYSQL

我想将数据从 MYSQL 传输到 MSSQL,结果我在它们之间创建了链接服务器

在这一步之前我没有任何问题

我写了下面的代码从 MYSQL 获取数据并插入到 MSSQL

INSERT into dbo.test2016
SELECT * FROM openquery(test1, 'SELECT t_id,t_date
FROM test1.test2016') T1
INNER JOIN dbo.test2016 T2 ON T1.t_date > T2.t_date
Run Code Online (Sandbox Code Playgroud)

但我在MSSQL中遇到Msg 213, Level 16, State 1, Line 1 因为INNER JOIN无法与INSERT INTO匹配

我需要在插入 MSSQL 之前比较两个表之间的 t_date 列

我能怎么做?

mysql sql-server linked-server

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

如果 SELECT 中的一个或多个链接服务器脱机,则链接服务器 SELECT UNION 结果

我正在创建视图,但在此之前我正在测试和使用多个链接服务器在 select union 语句中返回列值,我使用以下简单代码:

    SELECT * FROM OPENQUERY ([linkedserver1],'SELECT TOP 1 [Column1], [Column2] FROM [db].[table]')
    UNION ALL
    SELECT * FROM OPENQUERY ([linkedserver2],'SELECT TOP 1 [Column1], [Column2] FROM [db].[table]')
    UNION ALL
    SELECT * FROM OPENQUERY ([linkedserver3],'SELECT TOP 1 [Column1], [Column2] FROM [db].[table]')
Run Code Online (Sandbox Code Playgroud)

它按预期返回以下结果:

    |Column1|Column2|
    | 001   | Pass  |
    | 010   | Pass  |
    | 100   | Pass  |
Run Code Online (Sandbox Code Playgroud)

但我的问题在于,当其中一个链接服务器离线时(例如 [ linkedserver2 ]),没有显示任何结果,我只得到:

    OLE DB provider "SQLNCLI11" for linked server "[linkedserver2]" returned
    message "Login timeout expired".
    OLE DB provider "SQLNCLI11" for …
Run Code Online (Sandbox Code Playgroud)

sql-server linked-server openquery

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

链接服务器上的 OPENQUERY 更新

我想通过链接服务器(openquery)执行以下语句:

UPDATE SAP_PLANT 
SET (OWNER, OWNER_COUNTRY) = (SELECT import.AFNAME, import.COUNTRY
                                FROM SAP_IMPORT_CUSTOMERS import, SAP_PLANT plant
                                WHERE plant.SAP_FL = import.SAP_NO
                                AND import.role ='OWNER')
Run Code Online (Sandbox Code Playgroud)

我试图将其形成以下语法,但没有成功:(

update openquery(‘my_linked_server, ‘select column_1, column_2 from table_schema.table_name where pk = pk_value’)
set column_1 = ‘my_value1?, column_2 = ‘my_value2?
Run Code Online (Sandbox Code Playgroud)

我希望这对你来说没有问题?

sql linked-server openquery sql-update

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

无法从链接服务器“LinkedServerName”的 OLE DB 提供程序“ProviderName”获取行数据

当我尝试执行涉及 Oracle 链接服务器的查询时,我遇到了这个问题。找到下面的查询,

SELECT DISTINCT Convert(nvarchar(100),A.ZIP_CD)
               ,Convert(nvarchar(100),A.CITY)
               ,Convert(nvarchar(100),A.ST_CD)
               ,Convert(nvarchar(100),E.PCT)
               ,Convert(nvarchar(100),B.DEFAULT_DEL_CHG)
               ,Convert(nvarchar(100),E.DEL_TAX)

FROM [LIVE]..[CUSTOM].MASTER_ZIP A,
     [LIVE]..[MISC].ZONE B,
     [LIVE]..[MISC].ZIP2ZONE C,
     [LIVE]..[MISC].ZIP2TAX D,
     [LIVE]..[SALES].TAT E
WHERE A.ZIP_CD = C.ZIP_CD
AND ISNULL(B.DEFAULT_DEL_CHG,0) <> 0
AND A.USPS_PRIM = 'P'
AND C.ZONE_CD = B.ZONE_CD
AND A.ZIP_CD = D.ZIP_CD
--AND decode(D.TAX_CD,'999','99',d.tax_cd) = E.TAT_CD
AND (Case When D.TAX_CD = '999' Then '99' Else D.TAX_CD End) = E.TAT_CD
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误,

无法从链接服务器“LIVE”的 OLE DB 提供程序“OraOLEDB.Oracle”获取行数据。

我在一个论坛上发现,由于 Oracle 在 sql server 中转换数字时出现问题,请尝试转换为 nvarchar,但我仍然遇到相同的错误。

关于如何解决这个问题有什么想法吗?谢谢。

oracle oledb linked-server

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

在web.config中指定链接的sql server

如何设置链接服务器MVC3 Web.Config

我们有一个链接服务器,它有一个SP_PROC我们需要运行的存储过程.但是,主SQL服务器TESTSERVER1和链接服务器都是在测试环境中设置的TESTSERVER2,因此名称/ ip将在应用程序上线后更改.因此,我不想SP在代码中指定任何名称以外的内容.

我已经尝试在连接字符串的初始目录字段中指定链接服务器,但是这会抛出错误 - 所以我假设我正在咆哮错误的树.

连接字符串示例:

<add name="connectionName" connectionString="data source=TESTSERVER1;Initial Catalog=TESTSERVER2;user id.../>
Run Code Online (Sandbox Code Playgroud)

c# sql connection-string linked-server

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

替代openquery删除MySQL

我正在运行Microsoft SQL Server 2012并尝试在openqueryMySQL数据库中运行删除命令:

delete openquery(MyLinkedServer, 'select * from table_to_delete_from');
Run Code Online (Sandbox Code Playgroud)

然而,这是完全的,痛苦地缓慢到不可行的程度.涉及的数据集太大,并且执行上述操作要求必须通过VPN将所有要删除的MySQL数据提取到MSSQL服务器.

直接从MySQL服务器运行此命令时,观察速度超过5倍,这是可行的.

如何delete在不必复制数据集的情况下从MSSQL 调用命令到MySQL链接服务器?也许在MySQL端运行各种存储过程?这有用openquery吗?

mysql linked-server openquery

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

如何在 OPENQUERY 中使用更新和加入

我在 SQL Server 2008 R2 表中有几行

ConfirmTable (ItemID, Barcode)
Run Code Online (Sandbox Code Playgroud)

以及 DB2 头文件中的更多行

O1 (ItemId, barcode, ProductionUnit, OwnerName, Delivered, Qty)
Run Code Online (Sandbox Code Playgroud)

和详细文件

O2 (ItemId, barcode, Address, ItemName, Delivered, TotalLines)
Run Code Online (Sandbox Code Playgroud)

如果ItemIDBarcode存在于ConfirmTable. 我正在尝试使用以下查询,但似乎显示以下错误。

链接服务器“LINK_DB”的 OLE DB 提供程序“DB2OLEDB”返回消息“更新或刷新的键列信息不足。”

代码:

UPDATE OQ 
SET OQ.Delivered='YES'
FROM OPENQUERY(LINK_DB, 'SELECT * 
                         FROM XXXXR.HLIB.O1 O1O 
                         LEFT JOIN XXXXR.HLIB.O2 O2O ON O1O.ItemID = O2O.ItemID 
                         WHERE O1O.Qty > 0') OQ 
INNER JOIN 
    ConfirmTable CT ON CT.Barcode = OQ.Barcode
Run Code Online (Sandbox Code Playgroud)

我也尝试了以下更新格式,但它对我不起作用。

http://www.experts-exchange.com/questions/28390846/OPENQUERY-in-sql-server-linked-server.html

sql-server db2 join linked-server sql-update

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

尝试修复SQL查询以返回单个结果时出现问题

我正在尝试使用此查询来删除链接服务器的数据库中已有的行:

GO
USE TAMSTest
GO
DELETE from [dbo].[Hour]
 WHERE [dbo].[Hour].[InHour] = (SELECT [InHour] 
                                  FROM [TDG-MBL-005].[TAMSTEST].[dbo].[Hour])
GO
Run Code Online (Sandbox Code Playgroud)

当链接服务器表中只有一行时,SELECT [InHour] FROM [TDG-MBL-005].[TAMSTEST].[dbo].[Hour]返回该行,DELETE按预期工作.但是,对于链接服务器表中的多行,它不起作用,因为查询的该部分返回多行作为其结果.我该如何解决这个问题?

如果需要进一步的信息请询问,我需要尽快完成.

在此先感谢,伊顿B.

database sql-server linked-server sql-server-2008

0
推荐指数
1
解决办法
128
查看次数