create database 库名
on
(name='逻辑名',
filename='mdf路径'
)
for attach
on
(name='逻辑名',
filename='mdf路径'
)
for attach
解决方案 »
- 求教一个查询语句,生成序列号
- 求一条SQL2000更新记录的语句
- 如何比较出某个表中的两行记录中数值不同的字段
- 拆分一句sql语句,不含子查询的。
- 经常要使用到两三个表的联合查询,怎样做效率较高?
- 关于sql 2008 R2 表的xml数据类型 - 能否直接用在SSRS报表里呢?
- 大家来看,这个递归触发器怎么写
- 谁有“用ASP和SQL实现基于Web的事件日历”的源代码?
- 请问这个查询语句该如何写?
- 有谁会写这道题的SQL语句(比较难)
- SQL Server2000启动后不到一分钟就自动停止
- 当 where ID = '"+myID+"' 没有匹配的记录时, myReader[TotalCarton]会输出什么值呢? 我的测试是什么都没有, 这样合理吗?
GO
EXEC sp_detach_db @dbname = 'AdventureWorks';
EXEC sp_attach_single_file_db @dbname = 'AdventureWorks',
@physname = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf';
GO
sp_detach_db Archive;
GO
-- Get the SQL Server data path
DECLARE @data_path nvarchar(256);
SET @data_path = (SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1)
FROM master.sys.master_files
WHERE database_id = 1 AND file_id = 1);
-- Execute CREATE DATABASE FOR ATTACH statement
EXEC ('CREATE DATABASE Archive
ON (FILENAME = '''+ @data_path + 'archdat1.mdf'')
FOR ATTACH');
GO
不过,万一日志被删除,保留有数据文件,是可以依据数据文件产生日志文件的
SQL2000中可以使用DBCC REBUILD命令.
SQL2005中可以使用CREATE DATABASE命令附加数据文件,同时产生日志文件假定数据库名为DBName, 数据文件位置为 StrDBFile, 逻辑名为 LogicDBName
语法如下:CREATE DATABASE DBName
ON (NAME=LogicDBName, FILENAME=StrDBFile)
FOR ATTACH_REBUILD_LOG 如果有多个数据文件, 可以在ON括号后面继续添加定义
--联机帮助To attach a database
CREATE DATABASE database_name
ON <filespec> [ ,...n ]
FOR { ATTACH [ WITH <service_broker_option> ]
| ATTACH_REBUILD_LOG }
[;]FOR ATTACH_REBUILD_LOG
指定通过附加一组现有的操作系统文件来创建数据库。该选项只限于读/写数据库。如果缺少一个或多个事务日志文件,将重新生成日志文件。必须有一个指定主文件的 <filespec> 项。 注意:
如果日志文件可用,数据库引擎将使用这些文件,而不会重新生成日志文件。
FOR ATTACH_REBUILD_LOG 具有以下要求:完全关闭数据库。
所有数据文件(MDF 和 NDF)都必须可用。
重要提示:
该操作会中断日志备份链。建议在完成该操作后执行完整数据库备份。有关详细信息,请参阅 BACKUP (Transact-SQL)。
通常,FOR ATTACH_REBUILD_LOG 用于将具有大型日志的可读/写数据库复制到另一台服务器,在这台服务器上,数据库副本频繁使用,或仅用于读操作,因而所需的日志空间少于原始数据库。不能对数据库快照指定 FOR ATTACH_REBUILD_LOG。