Sql 查询不同服务器上的表,一个本地
这似乎很基本,但我对SQL Server非常陌生。我甚至不知道如何找到这个答案,因为我可能连问的都不对 我的任务是将Access数据库移动到SQL Server以实现可伸缩性。我已经创建了一个本地实例,并且毫无问题地移动了表 现在我必须转换填充这些表的操作查询。Access与2台远程SQL Server建立了ODBC连接,并在本地拥有自己的表。我正在移动的查询很容易在Access中设计/执行,但我面临着用SQL编写脚本的挑战。我在SQLServerManagementStudio中连接了两台远程服务器,但试图为本地插入查询引用远程表让我感到困惑 我一直在尝试使用以下语法进行选择和联接:Sql 查询不同服务器上的表,一个本地,sql,sql-server,Sql,Sql Server,这似乎很基本,但我对SQL Server非常陌生。我甚至不知道如何找到这个答案,因为我可能连问的都不对 我的任务是将Access数据库移动到SQL Server以实现可伸缩性。我已经创建了一个本地实例,并且毫无问题地移动了表 现在我必须转换填充这些表的操作查询。Access与2台远程SQL Server建立了ODBC连接,并在本地拥有自己的表。我正在移动的查询很容易在Access中设计/执行,但我面临着用SQL编写脚本的挑战。我在SQLServerManagementStudio中连接了两台远程
[server name].[database name].[schema].[table name]
我得到的是关键字“FROM”附近的语法不正确
同样,如果其他地方也提到了这一点,即使是一个链接也会有所帮助。正如我所说,我刚刚开始了解这一点,可能没有正确地搜索
非常感谢
更新-使用SQL Server Management Studio 2012。我确实在对象浏览器中添加了到其他两台服务器的链接。现在我需要了解如何在一个查询中同时使用本地表和远程表
INSERT INTO dbo.QUES_ANSWER_LABEL ( ques_data_id, label_id )
SELECT QFINITI.Qfiniti_Platform.dbo.eval_question_answer_label.ques_data_id, QFINITI.Qfiniti_Platform.dbo.eval_question_answer_label.label_id
FROM EVAL_CORE INNER JOIN EVAL_QUES_LNK ON EVAL_CORE.eval_id = EVAL_QUES_LNK.eval_id INNER JOIN QFINITI.Qfiniti_Platform.dbo.eval_question_answer_label ON EVAL_QUES_LNK.ques_data_id = QFINITI.Qfiniti_Platform.dbo.eval_question_answer_label.ques_data_id
WHERE EVAL_CORE.quality_date = CONVERT(DATETIME, '2013-12-02 00:00:00', 102);
这显示了我的尝试,我得到的错误是:
Msg 4104,16级,状态1,第4行
无法绑定多部分标识符QFINITI.QFINITI\u Platform.dbo.eval\u question\u answer\u label.ques\u data\u id。您可以使用链接服务器在不同实例中联接表,有关详细信息,请参阅文档 或者类似的答案 试着这样做:
INSERT INTO dbo.QUES_ANSWER_LABEL ( ques_data_id, label_id )
SELECT eval_question_answer_label.ques_data_id, eval_question_answer_label.label_id
FROM EVAL_CORE
INNER JOIN EVAL_QUES_LNK ON EVAL_CORE.eval_id = EVAL_QUES_LNK.eval_id
INNER JOIN QFINITI.Qfiniti_Platform.dbo.eval_question_answer_label ON EVAL_QUES_LNK.ques_data_id = eval_question_answer_label.ques_data_id
WHERE EVAL_CORE.quality_date = CONVERT(DATETIME, '2013-12-02 00:00:00', 102);
在列引用中不应使用完整的表路径,仅使用本地表名就足够了。您应该只需要FROM子句的表引用中的完整表路径。删除服务器是链接到本地服务器,还是运行查询的服务器?向我们展示引发该错误的所有查询。错误来自于引用/名称周围的内容。“从[DBWS0289].[QF_平台].[dbo].[eval_表单];”中选择[eform_id]”当我在对象浏览器中连接到远程服务器时,我可能没有链接到服务器,这可能是我的概念理解造成的。链接是否需要在远程服务器上提高权限?@BumpML可能,但这与语法错误无关。我不知道你的答复中那些引号/撇号是怎么回事。请编辑您的问题帖子并添加一个完整的查询,与您用于编辑和执行查询的任何工具或代码中显示的完全相同,并让我们知道该工具是什么。如果你能给我们足够的信息来重现这个问题,我们可能会在几秒钟内解决它。@rbaryyoung,谢谢。我在上面的问题中添加了更多内容,以表明我的立场。我欣赏你的洞察力!谢谢你,菲尔。这是否需要增加远程服务器上的权限?我添加链接服务器的尝试未成功。理想情况下,您可以在两台服务器上创建一个帐户,或者使用SA帐户(如果可用)。我确实找到了如何链接到服务器的方法。脚本中是否有需要调用的函数?