錯誤15105,從網上找了一些解決方案,一般都是說文件的權限不足的問題,
當然附加的時候必須是有數據庫附加權限才可以操作的。
解決辦法1:給相應的MDF文件給Full Control的權限,如果不知道是什麼用戶可以去Sql Server的配置中心去找
但是我遇到這個用上述方法就不可以。
解決方法2:換個用戶試試,我原數據庫是用sa登陸的,我試著用sa登陸一下,附加成功了!~
如果反復的用sa登陸卻登陸失敗,可能是沒有開權限。
權限可以在登陸用戶的選項中設置,允許登陸即可。
驗證模式則可以在服務器處設置,要選擇混合登陸模式。
另外對高版本數據附加低版本數據庫也可以試試上面的方法。
其實我個人更喜歡用生成腳本的方式導結構和數據。
在QA裡執行sp_attach_db或者sp_attach_single_file_db,出現提示:錯誤1813:未能打開新數據庫'dbname',create database 將終止。設備激活錯誤。物理文件名'd:\sql server\mssql\data\dbname _log.ldf'可能有誤!
按下面的步驟處理:
1.新建一個同名的數據庫
2.再停掉sqlserver服務(注意不要分離數據庫)
3.用原數據庫的數據文件覆蓋掉這個新建的數據庫
4.再重啟sqlserver服務
5.此時打開企業管理器時會出現置疑,先不管,執行下面的語句(注意修改其中的數據庫名)
6.完成後一般就可以訪問數據庫中的數據了。這時,數據庫本身一般還有問題,解決辦法是:利用數據庫的腳本創建一個新的數據庫,然後通過DTS將數據導進去就行了
復制代碼 代碼如下:
use master go sp_configure 'allow updates',1 reconfigure with override go update sysdatabases set status =32768 where name='置疑的數據庫名' go sp_dboption '置疑的數據庫名', 'single user', 'true' go dbcc checkdb('置疑的數據庫名') go update sysdatabases set status =28 where name='置疑的數據庫名' go sp_configure 'allow updates', 0 reconfigure with override go sp_dboption '置疑的數據庫名', 'single user', 'false' go
Sql Server 2000附加數據庫出現1813錯誤的解決方法
今天進行了一錯誤操作。
數據庫xxzx_discuz,因生成大量日志使日志文件'xxzx_discuz_Log.LDF' 占滿了磁盤所有空間,使網站無法正常使用數據庫。
自己圖省事分離數據庫xxzx_discuz後,直接刪除'xxzx_discuz_Log.LDF' (因為文件太大,無法存放到回收站),重新附件到SQL Server時出現兩個提示:
------------------------------------------------------------------------------------------------------------------------------
SQL Server 企業管理器
---------------------------
為日志文件指定的文件名不正確。
將創建新的日志文件。
要繼續嗎?
---------------------------
是(Y) 否(N)
------------------------------------------------------------------------------------------------------------------------------
Microsoft SQL-DMO (ODBC SQLState: 42000)
---------------------------
錯誤 1813: 未能打開新數據庫 'xxzx_discuz'。CREATE DATABASE 將終止。
設備激活錯誤。物理文件名 'S:\Program Files\Microsoft SQL Server\MSSQL\data\xxzx_discuz_Log.LDF' 可能有誤。
---------------------------
確定
------------------------------------------------------------------------------------------------------------------------------
從而無法將數據庫正常附加到SQL Server 2000,正常情況下這樣操作是沒有問題的,SQL Server會重新生成日志文件,但是因為之前出現了磁盤空間不足,日志文件不完整,從而造成了無法正常附加。
解決辦法如下(從網上找來的):
0.備份數據文件'xxzx_discuz_Log.MDF'
1.新建一個同名的數據庫'xxzx_discuz'
2.再停掉sqlserver服務(注意不要分離數據庫)
3.用原數據庫的數據文件'xxzx_discuz_Log.MDF' 覆蓋掉新建的數據庫
4.再重啟sqlserver服務
5.此時打開企業管理器時會出現置疑,先不管,執行下面的語句(注意修改其中的數據庫名) 6.完成後一般就可以訪問數據庫中的數據了。這時,數據庫本身一般還有問題,解決辦法是:利用數據庫的腳本創建一個新的數據庫,然後通過DTS將數據導進去就行了. SQL代碼
復制代碼 代碼如下:
use master
go
sp_configure 'allow updates',1 reconfigure with override
go
update sysdatabases set status =32768 where name='置疑的數據庫名'
go
sp_dboption '置疑的數據庫名', 'single user', 'true'
go
dbcc checkdb('置疑的數據庫名')
go
update sysdatabases set status =28 where name='置疑的數據庫名'
go
sp_configure 'allow updates', 0 reconfigure with override
go
sp_dboption '置疑的數據庫名', 'single user', 'false'
go
特別注意最後一步中的說明“這時,數據庫本身一般還有問題,解決辦法是:利用數據庫的腳本創建一個新的數據庫,然後通過DTS將數據導進去就行了” 參考文章:Sql Server附加數據庫出現1813錯誤的解決方法