更新:2007 年 11 月
除了能够从现有数据库导入数据库架构之外,还可以从现有脚本导入数据库对象。例如,可以使用此方法获得通过使用其他第三方工具创建的现有数据库定义,并将其导入数据库项目。将分析指定的脚本,识别创建数据库对象的所有语句并将这些语句导入数据库项目。
如果有任何对象的定义中包含错误,则将跳过该对象。如果该错误与类型定义有关,则会在数据库项目中的 ScriptsIgnoredOnImport.sql 文件中放入一条语句。如果对象类型有效,但是对象的定义中包含错误(例如,视图引用的表不存在),则会在“错误列表”窗口中显示一条错误消息。
从脚本中导入数据库对象定义
从脚本中导入数据库对象定义
在“项目”菜单上,单击“导入脚本”。
将出现“导入 SQL 脚本文件”向导。
说明:
还可以在“解决方案资源管理器”或“架构视图”中右击数据库项目,然后单击“导入脚本”。
阅读向导的简介页后,单击“下一步”前进到“选择文件”页。
在“文件名”中键入文件名,包括要导入的脚本的路径。也可以单击浏览按钮找到该文件。
如果希望用导入的对象来替换数据库项目中具有相同名称和类型的对象,请选中“覆盖项目中已存在的对象”复选框。
在“编码”中,单击用来创建脚本文件的编码。
单击“完成”从指定的脚本导入数据库对象定义。
分析脚本并将所有对象定义添加到数据库项目时,会显示进度页。当从脚本中导入数据库定义时会创建一个日志文件。日志文件存储在项目文件夹中的“导入脚本日志”子文件夹内。
说明:
不能修改源文件,在共享只读模式下打开源文件。
问题和局限性
“导入 SQL 脚本文件”向导在指定的脚本中搜索所有的数据定义语言 (DLL)CREATE 语句,并将相应的对象添加到项目中。但存在以下局限性:
无法识别的语句将放入数据库项目中的 ScriptsIgnoredOnImport.sql 文件中。
假设脚本中包含单个数据库中的对象的定义。所有的对象都将导入到当前的数据库项目中。如果脚本中包含多个数据库的定义,则 CREATE DATABASE 和 USE 语句将被忽略,并且所有的对象都将添加到数据库项目中。如果要创建多个数据库项目,则必须手动拆分该文件,以便每个数据库都有一个文件,然后分别将每个文件导入其各自的数据库项目中。如果将具有多个数据库定义的脚本导入单个数据库项目中,则可能会收到大量的错误。
添加文件组的 ALTER DATABASE 语句也将导入。如果脚本中包含一个 CREATE 语句,并且该语句后面是已创建对象的 DROP 语句,则该对象将被导入。
仅导入向表中添加约束或者为全文索引指定列的 ALTER TABLE 语句。对于约束而言,只有那些添加单个约束的语句才可以被识别。向表中添加多个约束的语句将被跳过。
不同的批处理必须用 GO 语句隔开
说明:
若要导入脚本的运行结果,而不导入脚本中包含的 CREATE 语句,可以运行脚本来创建数据库,然后使用“导入数据库架构”命令来导入生成的数据库。