sp_attach_single_file_db
新增信息 - 2001 年 9 月将只有一个数据文件的数据库附加到当前服务器。语法
sp_attach_single_file_db [ @dbname = ] 'dbname'
, [ @physname = ] 'physical_name'参数
[@dbname =] 'dbname'要附加到服务器的数据库的名称。dbname 的数据类型为 sysname,默认值为 NULL。 [@physname =] 'phsyical_name'据库文件的物理名称,包括数路径。physical_name 的数据类型为 nvarchar(260),默认值为 NULL。返回代码值
0(成功)或 1(失败)结果集
无注释
当使用 sp_attach_single_file_db 将数据库附加到服务器时,它创建一个新的日志文件并执行额外的清除工作,从新附加的数据库中删除复制。仅对使用显式 sp_detach_db 操作从服务器分离的数据库执行 sp_attach_single_file_db。仅对具有单个日志文件的数据库使用 sp_attach_single_file_db。不要对具有多个日志文件的数据库使用此存储过程。权限
只有 sysadmin 和 dbcreator 固定服务器角色的成员才能执行本过程。示例
下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。EXEC sp_detach_db @dbname = 'pubs'
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'
请参见sp_attach_dbsp_detach_dbsp_helpfile系统存储过程
新增信息 - 2001 年 9 月将只有一个数据文件的数据库附加到当前服务器。语法
sp_attach_single_file_db [ @dbname = ] 'dbname'
, [ @physname = ] 'physical_name'参数
[@dbname =] 'dbname'要附加到服务器的数据库的名称。dbname 的数据类型为 sysname,默认值为 NULL。 [@physname =] 'phsyical_name'据库文件的物理名称,包括数路径。physical_name 的数据类型为 nvarchar(260),默认值为 NULL。返回代码值
0(成功)或 1(失败)结果集
无注释
当使用 sp_attach_single_file_db 将数据库附加到服务器时,它创建一个新的日志文件并执行额外的清除工作,从新附加的数据库中删除复制。仅对使用显式 sp_detach_db 操作从服务器分离的数据库执行 sp_attach_single_file_db。仅对具有单个日志文件的数据库使用 sp_attach_single_file_db。不要对具有多个日志文件的数据库使用此存储过程。权限
只有 sysadmin 和 dbcreator 固定服务器角色的成员才能执行本过程。示例
下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。EXEC sp_detach_db @dbname = 'pubs'
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'
请参见sp_attach_dbsp_detach_dbsp_helpfile系统存储过程
解决方案 »
- 数据库登录名sa左下方有个红色箭头表示什么呢
- 创建存储过程修改
- sql server四舍五入函数round对少数数字(3.465)计算不正确
- 如何查询一张表中剩余的项
- 在SQL2005中怎么配置服务器?又怎么附加数据库
- 搞不懂的问题(超级简单问题)
- SQL SERVER2008在 Windows Vista第统里面安装出错
- 有没有简单的方法附加被置疑后的数据库文件?
- 如何从远程备份sqlserver数据库到本地机器。不使用sqlserver导入和导出功能。
- 求过滤的SQL语句,急!!
- OpenVMS(半知半解) ,请您再帮帮忙!!
- 在Sql Server中,创建临时表时,字符集是根据什么定的?是操作系统还是数据库字符集?
将只有一个数据文件的数据库附加到当前服务器。语法
sp_attach_single_file_db [ @dbname = ] 'dbname'
, [ @physname = ] 'physical_name'EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'
Use Master
Go
sp_configure 'allow updates', 1
reconfigure with override
Go
然后
update sysdatabases set status = 32768 where name = '<db_name>'
现在,重新建立一个log文件(我试过但无法成功,不知高手有何方法)。先把SQL Server 重新启动一下,然后检查你的数据库吧。
先设置成单用户模式,然后做dbcc
sp_dboption '<db_name>', 'single user', 'true'
DBCC CHECKDB('<db_name>')
把数据库状态改回去了,记得别忘了把系统表的修改选项关掉。
update sysdatabases set status = 28 where name = '<db_name>' --当然你的数据库状态可能不是这个,自己改为合适的值吧。也可以用sp_resetstatus
go
sp_configure 'allow updates', 0
reconfigure with override
Go
1、展开服务器组,然后展开服务器。
2、右击"数据库",然后选择"所有任务"/"附加数据库"。
3、输入要附加的数据库的 MDF(master 数据文件)名称。如果不确定文件位于何处,单击浏览("...")搜索。最多可以指定 16 个文件名。有关更多信息,请参阅 sp_attach_db。
4、若要确保指定的 MDF 文件正确,请单击"验证"。"原文件名"列列出了数据库中的所有文件(数据文件和日志文件)。"当前文件位置"列列出了文件的名称和路径。如果 Microsoft? SQL Server? 找不到指定位置的文件,则附加操作将失败。可以对"当前文件位置"列进行编辑,并且文件的当前位置必须在该列中才能使附加操作得以进行。例如,如果在分离操作前改变了文件的默认位置,则必须指定当前位置才能使附加操作顺利进行。
5、在"附加为"框内,输入数据库的名称。数据库名称不能与任何现有数据库名称相匹配。
6、指定数据库的所有者。
7、单击"确定"按钮。新附加的数据库的数据库节点即创建在"数据库"文件夹中。
exec sp_detach_db 'DB_Name'
2、在我的电脑中将日志的物理文件xxx_Log.LDF改名。
3、在查询分析器中执行:
exec sp_attach_single_file_db 'DB_Name','C:\Program Files\Microsoft SQL Server\MSSQL\Data\DB_Name.MDF'
4、如果上一步成功,将步骤2中改名后的文件删除。
EXEC sp_attach_db @dbname = 'test',
@filename1 = 'd:\mssql7\data\test_data.mdf',
@filename2 = 'd:\mssql7\data\test_log.ldf'
这样就把test数据库附加到SQL Server中,可以照常使用。
如果不想用原来的日志文件,可以用如下的命令:
EXEC sp_detach_db @dbname = 'test'
EXEC sp_attach_single_file_db @dbname = 'test',
@physname = 'd:\mssql7\data\test_data.mdf'
这个语句的作用是仅仅加载数据文件,日志文件可以由SQL Server数据库自动添加,但是原来的日志文件中记录的数据就丢失了。