当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQL Server 2000 数据库分离与附加

MSSQL
MS SQL SERVER2005 XML 最佳实践
SQL Server对文件进行全文检索的查询
教你构建SQL Server可管理安全机制
维护SQL Server的交易日志经验总结
SQL SERVER 2005 EXPRESS不能远程连接的问题
SQL Server与Oracle并行访问本质区别
SQL Server数据库优化其索引的小技巧
分析及解决SQLServer死锁问题
用SQL Server为Web浏览器提供图像
SQL Server SQL Agent服务使用小结
SQL Server 存储过程的分页方案比拼
SQL Server数据库中存储引擎深入探讨
四招解决SQL Server对上亿表的排序和join的问题
SQL Server数据库管理员必须掌握的DBCC命令
如何将sql数据库的文件备份到本地?
如何解决Sybase数据库乱码问题详解
SQL Server:SQLServer中最小函数依赖集
小编谈Transact-SQL中的一些命名规范
谈SQL编写规范
浅谈SQL命名与注释规范

MSSQL 中的 SQL Server 2000 数据库分离与附加


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 58 ::
收藏到网摘: n/a

sp_detach_db
从服务器分离数据库,并可以选择在分离前在所有的表上运行 UPDATE STATISTICS。

语法
sp_detach_db [ @dbname = ] 'dbname'
    [ , [ @skipchecks = ] 'skipchecks' ]

参数
[@dbname =] 'dbname'

要分离的数据库名称。dbname 的数据类型为 sysname,默认值为 NULL。

[@skipchecks =] 'skipchecks'

skipchecks 的数据类型为 nvarchar(10),默认值为 NULL。如果为 true,则跳过 UPDATE STATISTICS。
如果为 false,则运行 UPDATE STATISTICS。对于要移动到只读媒体上的数据库,此选项很有用。

返回代码值
0(成功)或 1(失败)

结果集

注释
使用 sp_attach_db 或 sp_attach_single_file_db 保留并重新附加分离文件。文件也可以移动并附加到其它服务器上。

权限
只有 sysadmin 固定服务器角色的成员才能执行 sp_detach_db。

示例
下面的示例分离 pubs 数据库,并将 skipchecks 设为 true。
EXEC sp_detach_db 'pubs', 'true'

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'

sp_attach_single_file_db
只有一个数据文件的数据库附加到当前服务器。

语法
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。

权限
只有 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_helpfile
返回与当前数据库关联的文件的物理名称及特性。使用此存储过程确定附加到服务器或从服务器分离的文件名。

语法
sp_helpfile [ [ @filename = ] 'name' ]

参数
[@filename =] 'name'

是当前数据库中任意文件的逻辑名称。name 的数据类型为 sysname,默认值为 NULL。如果不指定 name,会列出当前数据库中所有文件的特性。

返回代码值
0(成功)或 1(失败)

结果集