使用Sql Server Management Studio导入/导出数据问题

时间:2011-03-30 00:11:56

标签: sql-server

我对微软的所有事情都很陌生......我一直在苦苦思索如何使用SQL Server Management Studio 2008导出数据库并将其导入另一个数据库服务器。我是LAMP开发人员,所以如果这是一个mysql数据库,我会将以下内容输入shell终端:

mysqldump -u src_dbuser -psrc_password -h src_dbserver src_dbname > export.sql
mysql -u dest_dbuser -pdest_password -h dest_dbserver dest_dbname < export.sql

如何在SQL Server中执行等效任务?我尝试了很多东西,但都失败了。我的团队在SQL Server Management Studio中尝试过的示例:

1)我的客户端右键单击数据库,选择“任务”,选择“生成脚本...”,然后按照后续弹出窗口中列出的步骤操作。在这样做的过程中,我们得到了db-schema的sql文件和所有存储过程,但它缺少所有数据。我们没有看到导出数据的选项。

2)所以我的客户决定将数据导出为ex​​cel文件。当我尝试导入excel文件时,其中一个实体记录违反了db约束。 excel文件的字段为“空单元”,该字段将映射到相应数据库表中的不可为空的列。这一条记录停止并退出剩余的导入过程。我无法弄清楚如何告诉Sql Server Management Studio忽略这一条记录并继续导入其余的数据。

3)然后我尝试从家里远程进行出口,只是为了看看我的客户是否遗漏了什么。在重现步骤2)中概述的步骤时,我在导出时出现了新错误

Microsoft.SqlServer.Management.Smo.SmoException: Could not read metadata, possibly due to insufficient access rights. at Microsoft.SqlServer.Management.SqlScriptPublish.GeneratePublishPage.worker_DoWork(Object sender, DoWorkEventArgs e) at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e) at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)

我认为我拥有所有访问权限,因为我可以成功执行执行CRUD操作的查询。不确定如何确认我是否拥有访问权限。

我浪费了这么多时间......我很沮丧......微软是否试图让事情变得非常困难?有人可以告诉我如何成功导入/导出数据库,以便我可以回到做我喜欢做的事情吗?即。发展!!!

其他信息

好的,我按照一些人的建议尝试了备份方法。这不起作用,因为SSMS正在数据库服务器上创建备份文件,而不是我正在使用的计算机的HD。我无权访问数据库服务器上的文件系统,因此SSMS一直抱怨它没有写入任何目录的权限。

3 个答案:

答案 0 :(得分:3)

对数据库进行完整备份。您可以从SQL Server Management Studio执行此操作(右键单击数据库,选择'tasks'并选择'backup'。然后填写空白。或者您可以通过SQL Query执行此操作,如下所示:< / p>

backup database sandbox
to disk='C:\sql-backup\sandbox.bak'
with name='sandbox-Full Database Backup' ,
     noformat ,
     init     ,
     skip     ,
     norewind ,
     nounload ,
     stats=10

将其复制到目标SQL服务器 - FTP,在CD上刻录等等。可能首先要压缩它,具体取决于它的大小。

在目标服务器上打开SQL Server管理工作室。在对象资源管理器中,右键单击数据库选项卡,选择“还原数据库...”,然后您将获得一个2面板对话框。在“常规”下,您需要

  • 在“常规”窗格中:
    • 提供新数据库的名称
    • 中选择要恢复的'device'(文件名)
    • 选择要还原的备份集(文件内容)
  • 在“选项”窗格中:
    • 如果已存在具有该名称的数据库,您将需要选中“覆盖现有数据库”选项。
    • 您可能希望覆盖默认的数据/日志文件位置(但默认值通常是可行的)。
    • 确保恢复状态设置为“让数据库可以使用”(除非您有理由不这样做。

然后点击确定。

您还需要确保2个SQL Server实例上的默认归类序列相同。否则你几乎肯定会遇到问题。

答案 1 :(得分:0)

我结束了做暴力的事情。我将Excel文件导出到csv文件,每个工作表的一个csv文件表示一个db表。然后我手动编辑了csv文件...我将每个行项目转换为插入查询语句。我将插入查询复制并发布到sql server management studio中,并根据需要调试每个insert语句。

令人气愤

答案 2 :(得分:0)

How to get script of SQL Server data?

该链接向您展示如何将数据导出为一系列sql insert语句。然后,您可以在新的dbase上执行这些语句。