我有一个名为foo的数据库和一个名为bar的数据库。我有一个表在foo叫tblFoobar,我想移动(数据和所有)数据库酒吧从数据库foo。执行此操作的SQL语句是什么?


当前回答

在SQL Server上?在同一个数据库服务器上?使用三部分命名。

INSERT INTO bar..tblFoobar( *fieldlist* )
SELECT *fieldlist* FROM foo..tblFoobar

这只是移动数据。如果希望移动表定义(以及权限和索引等其他属性),则必须执行其他操作。

其他回答

SQL Server Management Studio的“Import Data”任务(右键单击DB名称,然后单击tasks)将为您完成大部分工作。在要将数据复制到的数据库中运行它。

如果表不存在,它将为您创建它们,但您可能必须重新创建索引等。如果表确实存在,它将默认添加新数据,但您可以调整(编辑映射),这样它将删除所有现有数据。

我一直在用这个,而且效果很好。

在SQL Server上?在同一个数据库服务器上?使用三部分命名。

INSERT INTO bar..tblFoobar( *fieldlist* )
SELECT *fieldlist* FROM foo..tblFoobar

这只是移动数据。如果希望移动表定义(以及权限和索引等其他属性),则必须执行其他操作。

我给你三个选择:

如果是同一个实例上的两个数据库:

SELECT  * INTO My_New_Table FROM [HumanResources].[Department];

如果它们是不同服务器上的两个数据库,并且你有链接服务器,那么:

SELECT  * INTO My_New_Table FROM [ServerName].[AdventureWorks2012].[HumanResources].[Department];

如果它们是不同服务器上的两个数据库,并且你没有链接服务器,那么:

SELECT * INTO My_New_Table
FROM OPENROWSET('SQLNCLI', 'Server=My_Remote_Server;Trusted_Connection=yes;',
     'SELECT * FROM AdventureWorks2012.HumanResources.Department');

这应该可以工作:

SELECT * 
INTO DestinationDB..MyDestinationTable 
FROM SourceDB..MySourceTable 

它不会复制约束、默认值或索引。创建的表将没有聚集索引。

或者你可以:

INSERT INTO DestinationDB..MyDestinationTable 
SELECT * FROM SourceDB..MySourceTable

如果目标表存在且为空。

在management studio中编写创建表的脚本,在bar中运行该脚本创建表。(在对象资源管理器中右键单击表,脚本表as,创建到…) 插入杆。(模式)。表SELECT * FROM foo.[schema].table