新匍京视频在线英特网看看的整理了弹指间,结果再附加到另一服务器的数据Curry面

一、前言

前几天公司要切换数据库服务器,数据库文件大于二G,结果再附加到另1服务器的数据Curry面,就发生了3个标题。如下:

标题:Microsoft SQL Server Management Studio
------------------------------
无法为此请求检索数据。(Microsoft.SqlServer.SmoEnum)
------------------------------
其他信息:
执行 Transact-SQL 语句或批处理时发生了异常。(Microsoft.SqlServer.ConnectionInfo)
------------------------------
E:\DATA\数据库名.mdf 不是主数据库文件。(Microsoft SQL Server,错误:5171)

一、前言

前天公司要切换数据库服务器,数据库文件大于2G,结果再附加到另一服务器的数据Curry面,就爆发了3个题目。如下:

标题:Microsoft SQL Server Management Studio
------------------------------
无法为此请求检索数据。(Microsoft.SqlServer.SmoEnum)
------------------------------
其他信息:
执行 Transact-SQL 语句或批处理时发生了异常。(Microsoft.SqlServer.ConnectionInfo)
------------------------------
E:\DATA\数据库名.mdf 不是主数据库文件。(Microsoft SQL Server,错误:5171)

2、消除方案

在英特网找了数不胜数措施,最终在CSDN上找到了有关的消除方法,经测试可用。

use master
go
sp_detach_db '数据库名' -- 分离数据库
go
sp_attach_db '数据库名','E:\数据库名.mdf','E:\数据库名.ldf' -- 附加数据库文件
go

网络看到的重新整建了一下。

在SQL Server
7.0中,微软生产了sp_attach_dbsp_attach_single_file_db系统存储进程。
它对于SQL Server数据库管理员实施上边包车型地铁职分是不行便于的:

  • sp_attach_db:直接将.MDF和.LDF文件附加到服务器。
  • sp_attach_single_file_db:只附加.MDF文件。
  • sp_detach_db:将数据库从三个服务器分离。复制.MDF文件到另贰个服务器上,然后使用sp_attach_db系统存款和储蓄进度重新附加这几个文件到几个服务器上。

固然它对于SQL
Server数据库管理员是很有用的,不过在使用那五个存款和储蓄进度时是有壹对范围的。限制如下:

  • 无法附加多少个日志文件。
  • 不可能附加15个以上的文本。

在SQL Server
二〇一〇中,微软发表上边的系统存款和储蓄过程将要未来的本子中被撤废。而她们在”Create
Database”
SQL语句中增加了三个从句”For Attach”。
上边介绍使用”For
Attach”从句的有余艺术,以战胜在利用sp_attach_db和sp_attach_single_file_db时要面临的范围。

二、消除方案

在英特网找了累累格局,最终在CSDN上找到了相关的化解措施,经测试可用。

use master
go
sp_detach_db '数据库名' -- 分离数据库
go
sp_attach_db '数据库名','E:\数据库名.mdf','E:\数据库名.ldf' -- 附加数据库文件
go

网络看看的整治了瞬间。

在SQL Server
七.0中,微软推出了sp_attach_dbsp_attach_single_file_db系统存储进程。
它对于SQL Server数据库管理员实施上面包车型客车天职是不行有利于的:

  • sp_attach_db:直接将.MDF和.LDF文件附加到服务器。
  • sp_attach_single_file_db:只附加.MDF文件。
  • sp_detach_db:将数据库从一个服务器分离。复制.MDF文件到另1个服务器上,然后利用sp_attach_db系统存款和储蓄进程重新附加这个文件到八个服务器上。

固然它对于SQL
Server数据库管理员是很有用的,但是在应用那五个存款和储蓄进度时是有一部分限制的。限制如下:

  • 不可能附加三个日志文件。
  • 无法附加1陆个以上的公文。

在SQL Server
二〇一〇中,微软颁发上边的体系存储进程将要今后的版本中被丢掉。而他们在”Create
Database”
SQL语句中增多了三个从句”For Attach”。
上边介绍使用”For
Attach”从句的多样方式,以制伏在运用sp_attach_db和sp_attach_single_新匍京视频在线,file_db时要面临的限定。

三、案例

-- 创建测试数据库
use master
go
CREATE DATABASE TestDB
ON
(
    NAME = TestDB,
    FILENAME = 'D:\TestDB.mdf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5,
)
LOG ON
(
    NAME = TestDB_log,
    FILENAME = 'D"\TestDB_log.ldf',
    SIZE = 5MB,
    MAXSIZE = 25MB,
    FILEGROWTH = 5MB
)
GO

-- 现在,让我们分离该数据库,并尝试使用sp_detach_db和sp_attach_db将它重新附加。
-- 执行下面的事务SQL语句。

use master
go
sp_detach_db 'TestDB'
go
sp_attach_db 'TestDB', 'D:\TestDB.mdf', 'D:\TestDB_log.ldf'
go

-- 你也可以使用具有"For Attach"从句的"Create database"命令附加相同的数据库文件,如下所示。

use master
go
sp_detach_db 'TestDB'
go

CREATE DATABASE TestDB
ON
(FILENAME = 'D:\TestDB.mdf'),
(FILENAME = 'D:\TestDB_log.ldf')
For Attach
go

-- 现在,让我们分离数据库TestDB,然后删除.ldf文件,再然后使用sp_attach_single_file_db
-- 系统存储过程通过,执行下面的T-SQL命令将它重新附加上。

use master
go
sp_detach_db 'TestDB'
go
exec master..xp_cmdshell 'del "D:\TestDB_log.ldf"'
go

-- 你可以使用下面的事务SQL语句来激活xp_cmdshell

use master
go
sp_configure 'show advanced options',1
go
reconfigure with override
go
sp_configure 'xp_cmdshell',1
go
reconfigure with override
go

-- 或者,你可以在MS-DOS命令提示符中使用Windows资源管理器的"Del"命令来删除.ldf文件。
-- 现在,让我们只使用sp_attach_single_file_db来附加.MDF文件。执行下面所示的命令。

use master
go
sp_attach_single_file_db 'TestDB','D:\TestDB.mdf'
go

-- 你可以只通过使用带有"For ATTACH_REBUILD_LOG"从句的"Create database"命令来附加
-- 相同的数据库.MDF文件,如下所示。

use master
go
sp_detach_db 'TestDB'
go
exec master..xp_cmdshell 'del "D:\TestDB_log.ldf"'
go

-- 注意:当日志文件被重新创建时,SQL Server自动对日志文件名称添加后缀"_log"。

CREATE DATABASE TestDB
ON
(
    FILENAME = 'D:\TestDB.mdf'
)
For ATTACH_REBUILD_LOG

三、案例

-- 创建测试数据库
use master
go
CREATE DATABASE TestDB
ON
(
    NAME = TestDB,
    FILENAME = 'D:\TestDB.mdf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5,
)
LOG ON
(
    NAME = TestDB_log,
    FILENAME = 'D"\TestDB_log.ldf',
    SIZE = 5MB,
    MAXSIZE = 25MB,
    FILEGROWTH = 5MB
)
GO

-- 现在,让我们分离该数据库,并尝试使用sp_detach_db和sp_attach_db将它重新附加。
-- 执行下面的事务SQL语句。

use master
go
sp_detach_db 'TestDB'
go
sp_attach_db 'TestDB', 'D:\TestDB.mdf', 'D:\TestDB_log.ldf'
go

-- 你也可以使用具有"For Attach"从句的"Create database"命令附加相同的数据库文件,如下所示。

use master
go
sp_detach_db 'TestDB'
go

CREATE DATABASE TestDB
ON
(FILENAME = 'D:\TestDB.mdf'),
(FILENAME = 'D:\TestDB_log.ldf')
For Attach
go

-- 现在,让我们分离数据库TestDB,然后删除.ldf文件,再然后使用sp_attach_single_file_db
-- 系统存储过程通过,执行下面的T-SQL命令将它重新附加上。

use master
go
sp_detach_db 'TestDB'
go
exec master..xp_cmdshell 'del "D:\TestDB_log.ldf"'
go

-- 你可以使用下面的事务SQL语句来激活xp_cmdshell

use master
go
sp_configure 'show advanced options',1
go
reconfigure with override
go
sp_configure 'xp_cmdshell',1
go
reconfigure with override
go

-- 或者,你可以在MS-DOS命令提示符中使用Windows资源管理器的"Del"命令来删除.ldf文件。
-- 现在,让我们只使用sp_attach_single_file_db来附加.MDF文件。执行下面所示的命令。

use master
go
sp_attach_single_file_db 'TestDB','D:\TestDB.mdf'
go

-- 你可以只通过使用带有"For ATTACH_REBUILD_LOG"从句的"Create database"命令来附加
-- 相同的数据库.MDF文件,如下所示。

use master
go
sp_detach_db 'TestDB'
go
exec master..xp_cmdshell 'del "D:\TestDB_log.ldf"'
go

-- 注意:当日志文件被重新创建时,SQL Server自动对日志文件名称添加后缀"_log"。

CREATE DATABASE TestDB
ON
(
    FILENAME = 'D:\TestDB.mdf'
)
For ATTACH_REBUILD_LOG

四、参考

东升哥

四、参考

东升哥

相关文章