SQL Server 过程/函数将表复制到另一个数据库

标签 sql sql-server database copy

我需要将一个表从一个数据库复制到另一个数据库。我的第一个猜测是使用源代码中的以下语句:

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/

相关文章:

javascript - 将值数据库传递给 Javascript

sql - PostgreSQL 数据库模型

php - Laravel 中的模型工厂和数据库播种机有什么区别?

sql - 如何为此编写sql?

sql-server - 无法在同一数据流任务中使用行计数和条件拆分

sql-server - 在选择/插入/更新表字段数据时修剪空格(前导和尾随)是一种好习惯吗?

sql - 尝试安装 Adventureworks 2016 数据库

sql - N :M Relationship between users and guests

mysql - 如何使用 curtime() 来 checkin 具有 now() 结构的列?数据库

mysql - SQL 语法错误?