在sql2005中数据库不存在的情况下,如何利用sql脚本文件还原数据库

时间:2022-04-08 19:09:06
我下了个网站,数据库是sql2005的,只有.sql脚本文件,我想请问下大家,如何把.sql脚本文件导入数据库呢?我是这样做的:我新建了个数据库,然后在这个数据库上新建查询,然后在把.sql脚本文件里面的内容复制到新建查询上,然后分析,执行,请问大家,这样做的数据库完整吗?或者有什么好的方法去导入呢?前提是没有数据库,也没有.mdf文件,只有.sql脚本执行文件,如何才能用这个.sql文件把数据库还原出来呢?求教!!!

7 个解决方案

#1


你要先看下里面的SQL脚本代码。里面应该有创建数据库的语句。

#2


可能他的sql脚本里包含了建库语句,看看有没有create database的语句

#3


'SQL Server 2000'
企业管理器   -->数据库-->右键-->所有任务-->附加数据库-->选择.mdf文件。之后按提示


'代码'
sp_attach_db   
  将数据库附加到服务器。   
    
  语法   
  sp_attach_db   [   @dbname   =   ]   'dbname'   
          ,   [   @filename1   =   ]   'filename_n'   [   ,...16   ]   
    
  参数   
  [@dbname   =]   'dbname'   
    
  要附加到服务器的数据库的名称。该名称必须是唯一的。dbname   的数据类型为   sysname,默认值为   NULL。     
    
  [@filename1   =]   'filename_n'   
    
  数据库文件的物理名称,包括路径。filename_n   的数据类型为   nvarchar(260),默认值为   NULL。最多可以指定   16   个文件名。参数名称以   @filename1   开始,递增到   @filename16。文件名列表至少必须包括主文件,主文件包含指向数据库中其它文件的系统表。该列表还必须包括数据库分离后所有被移动的文件。   
    
  返回代码值   
  0(成功)或   1(失败)   
    
  结果集   
  无   
    
  注释   
  只应对以前使用显式   sp_detach_db   操作从数据库服务器分离的数据库执行   sp_attach_db。如果必须指定多于   16   个文件,请使用带有   FOR   ATTACH   子句的   CREATE   DATABASE。   
    
  如果将数据库附加到的服务器不是该数据库从中分离的服务器,并且启用了分离的数据库以进行复制,则应该运行   sp_removedbreplication   从数据库删除复制。   
    
  权限   
  只有   sysadmin   和   dbcreator   固定服务器角色的成员才能执行本过程。   
    
  示例   
  下面的示例将   pubs   中的两个文件附加到当前服务器。   
    
  EXEC   sp_attach_db   @dbname   =   N'pubs',     
        @filename1   =   N'c:\Program   Files\Microsoft   SQL   Server\MSSQL\Data\pubs.mdf',     
        @filename2   =   N'c:\Program   Files\Microsoft   SQL   Server\MSSQL\Data\pubs_log.ldf'


'mdf文件如何导入到SQL-server数据库!!'

过程: 
1.停掉MSSQLSERVER,将MSSQL安装目录下的E:\Program Files\Microsoft SQL 

Server\MSSQL\Data\pubs.mdf和E:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf文

件移走。 
2.重新启动MSSQLSERVER,在SQL Server Enterprise Manager中可看到PUBS的图标是灰色的加了个'(置疑

)',删除PUBS。至此是为了模拟Pubs数据库只留下了pubs.mdf,(pubs_log.ldf不再用到)。 
3.将pubs.mdf移到MSSQL安装目录下E:\Program Files\Microsoft SQL Server\MSSQL\Data\ 
4.在SQL查询分析器中执行 exec sp_attach_db 'pubs' ,'E:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf' 
会有错误提示: 
设备激活错误。物理文件名 'e:\Program Files\Microsoft SQL Server\MSSQL\data\pubs_log.ldf' 可

能有误。 
已创建名为 'E:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.LDF' 的新日志文件。 
不过没关系,因为新日志文件已创建了,呵呵。 
用此方法只要有.mdf文件,就能回复数据库。 

#4


引用 2 楼 xys_777 的回复:
可能他的sql脚本里包含了建库语句,看看有没有create database的语句

对啊,直接执行那个文件看看

#5


引用 1 楼 csmark 的回复:
你要先看下里面的SQL脚本代码。里面应该有创建数据库的语句。



问题是里面没有create database语句啊.......那应该怎么办呢?

#6


都乱说,都没试试再说

#7


引用 5 楼 zx16800 的回复:
引用 1 楼 csmark 的回复:
你要先看下里面的SQL脚本代码。里面应该有创建数据库的语句。



问题是里面没有create database语句啊.......那应该怎么办呢?

那就打开那个脚本,把create database相关的语句写在最前面.

#1


你要先看下里面的SQL脚本代码。里面应该有创建数据库的语句。

#2


可能他的sql脚本里包含了建库语句,看看有没有create database的语句

#3


'SQL Server 2000'
企业管理器   -->数据库-->右键-->所有任务-->附加数据库-->选择.mdf文件。之后按提示


'代码'
sp_attach_db   
  将数据库附加到服务器。   
    
  语法   
  sp_attach_db   [   @dbname   =   ]   'dbname'   
          ,   [   @filename1   =   ]   'filename_n'   [   ,...16   ]   
    
  参数   
  [@dbname   =]   'dbname'   
    
  要附加到服务器的数据库的名称。该名称必须是唯一的。dbname   的数据类型为   sysname,默认值为   NULL。     
    
  [@filename1   =]   'filename_n'   
    
  数据库文件的物理名称,包括路径。filename_n   的数据类型为   nvarchar(260),默认值为   NULL。最多可以指定   16   个文件名。参数名称以   @filename1   开始,递增到   @filename16。文件名列表至少必须包括主文件,主文件包含指向数据库中其它文件的系统表。该列表还必须包括数据库分离后所有被移动的文件。   
    
  返回代码值   
  0(成功)或   1(失败)   
    
  结果集   
  无   
    
  注释   
  只应对以前使用显式   sp_detach_db   操作从数据库服务器分离的数据库执行   sp_attach_db。如果必须指定多于   16   个文件,请使用带有   FOR   ATTACH   子句的   CREATE   DATABASE。   
    
  如果将数据库附加到的服务器不是该数据库从中分离的服务器,并且启用了分离的数据库以进行复制,则应该运行   sp_removedbreplication   从数据库删除复制。   
    
  权限   
  只有   sysadmin   和   dbcreator   固定服务器角色的成员才能执行本过程。   
    
  示例   
  下面的示例将   pubs   中的两个文件附加到当前服务器。   
    
  EXEC   sp_attach_db   @dbname   =   N'pubs',     
        @filename1   =   N'c:\Program   Files\Microsoft   SQL   Server\MSSQL\Data\pubs.mdf',     
        @filename2   =   N'c:\Program   Files\Microsoft   SQL   Server\MSSQL\Data\pubs_log.ldf'


'mdf文件如何导入到SQL-server数据库!!'

过程: 
1.停掉MSSQLSERVER,将MSSQL安装目录下的E:\Program Files\Microsoft SQL 

Server\MSSQL\Data\pubs.mdf和E:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf文

件移走。 
2.重新启动MSSQLSERVER,在SQL Server Enterprise Manager中可看到PUBS的图标是灰色的加了个'(置疑

)',删除PUBS。至此是为了模拟Pubs数据库只留下了pubs.mdf,(pubs_log.ldf不再用到)。 
3.将pubs.mdf移到MSSQL安装目录下E:\Program Files\Microsoft SQL Server\MSSQL\Data\ 
4.在SQL查询分析器中执行 exec sp_attach_db 'pubs' ,'E:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf' 
会有错误提示: 
设备激活错误。物理文件名 'e:\Program Files\Microsoft SQL Server\MSSQL\data\pubs_log.ldf' 可

能有误。 
已创建名为 'E:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.LDF' 的新日志文件。 
不过没关系,因为新日志文件已创建了,呵呵。 
用此方法只要有.mdf文件,就能回复数据库。 

#4


引用 2 楼 xys_777 的回复:
可能他的sql脚本里包含了建库语句,看看有没有create database的语句

对啊,直接执行那个文件看看

#5


引用 1 楼 csmark 的回复:
你要先看下里面的SQL脚本代码。里面应该有创建数据库的语句。



问题是里面没有create database语句啊.......那应该怎么办呢?

#6


都乱说,都没试试再说

#7


引用 5 楼 zx16800 的回复:
引用 1 楼 csmark 的回复:
你要先看下里面的SQL脚本代码。里面应该有创建数据库的语句。



问题是里面没有create database语句啊.......那应该怎么办呢?

那就打开那个脚本,把create database相关的语句写在最前面.