我需要将一个表从一个数据库复制到另一个数据库。我的第一个猜测是使用源代码中的以下语句:
SELECT *
INTO TARGETDB.SCHEMA.TABLENAME
FROM SCHEMA.TABLENAME
(编辑:我知道它不会设置主键等,没关系)
遗憾的是,我必须在我的项目中使用的类几乎破坏了这个声明,我无法解决这个问题。
我的下一个想法是在 SQL Server 数据库中创建一个函数或过程,这样我就可以使用
SCHEMA.FUNCTNAME paramTARGETDB, paramTABLENAME
作为我代码中的语句。
我目前的流程是这样的:
CREATE PROCEDURE [SCHEMA].FUNCTNAME
@pVC_TARGETDB VARCHAR(240),
@pVC_TABLENAME VARCHAR(240)
AS
BEGIN
SELECT *
INTO @pVC_TARGETDB.SYSADM.@pVC_TABLENAME
FROM SCHEMA.@pVC_TABLENAME
END
但我对 SQL 的了解并不多,SQL Server Management Studio 告诉我存在语法错误。每个 @pVC_*
都被标记(编辑:在前两次出现时,它们没有被标记。仅在 BEGIN 和 END 之间的 block 中)。我收到的消息是:
"Syntax Error near @pVC_* Expecting ID, QUOTED_ID or '.'."
我尝试了几乎所有我能想象到的或通过 Google 找到的编写方法,也许很容易解决,也许不是。我做不到,请帮助我。
最佳答案
可以动态创建SQL语句然后执行
DECLARE @SQL NVARCHAR(MAX)
SET @SQL =
('SELECT *
INTO ' + @pVC_TARGETDB + '.SYSADM.' + @pVC_TABLENAME +
' FROM
SCHEMA.' + @pVC_TABLENAME)
EXEC (@SQL)
关于SQL Server 过程/函数将表复制到另一个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14751103/