在Sql过程中使用不同的数据库

在Sql过程中使用不同的数据库,sql,sql-server,Sql,Sql Server,我正在尝试使用存储过程创建动态表,其中包含从一个数据库到另一个数据库的动态列。 因为我有查询和条件的续集,所以我正在使用它。 但面临的问题是: Msg 102,15级,状态1,第1行“(”附近的语法不正确 下面是我遇到错误的一行: 执行('USE'+@DB1+';创建表DB2.dbo.+@TableName+'AS) (选择*FROM@DB1.dbo.“+@TableName+”) 提前感谢!!在您的代码中,您在文本内部(单引号内部)使用@DB1(第二次出现),但需要在外部,因此它将被解析为变量

我正在尝试使用存储过程创建动态表,其中包含从一个数据库到另一个数据库的动态列。 因为我有查询和条件的续集,所以我正在使用它。 但面临的问题是:

Msg 102,15级,状态1,第1行“(”附近的语法不正确

下面是我遇到错误的一行:

执行('USE'+@DB1+';创建表DB2.dbo.+@TableName+'AS) (选择*FROM@DB1.dbo.“+@TableName+”)


提前感谢!!

在您的代码中,您在文本内部(单引号内部)使用@DB1(第二次出现),但需要在外部,因此它将被解析为变量

Execute( 'USE ' + @DB1+ '; SELECT * INTO DB2.dbo.'+ @TableName + ' FROM ' + @DB1 + '.dbo.' + @TableName +')' );
此外,您还需要使用“select*into”,因为“CLATE table as”仅在Azure SQL数据仓库中有效,在MS SQL中语法不正确

所以正确的代码应该是这样的:

Execute( 'USE ' + @DB1+ '; SELECT * INTO DB2.dbo.'+ @TableName + ' FROM ' + @DB1 + '.dbo.' + @TableName +')' );

答案可能在错误消息中。您能否显示完整的脚本,特别是如何设置变量?我尝试在查询编辑器中运行它,但没有问题,但在使用2数据库后的过程中,我遇到了这个问题。如果我使用-CREATE TABLE DB2.dbo。“++@TableName+”作为(选择*FROM@DB1.dbo.“+@TableName..这也不起作用。我需要一个解决方案。请您更新您的问题,而不是添加注释。我认为如果您添加一个解释,解释问题中的原始代码为什么不起作用,会有所帮助。因为我使用的“create table”语句在ms-sql proced中不起作用ure.是的,这对我有效。我使用的create语句在sql过程中不起作用。我根据您的帮助进行了更改,它对我有效。Thanks@ankita25如果这解决了您的问题,请在我回答的左侧打勾,将我的答案标记为正确;)好的,我做了@shimon893。。他们的SQL过程是否可以用两台服务器(而不是使用同一服务器的两个数据库)来完成?是的,这是可能的,你可以链接这些服务器,这样它们就可以互相访问。下面是关于这方面的文档:非常感谢@shimon893。。我将实现它。。你有很好的知识!!