當前位置:首頁 » 數據倉庫 » sqlcmd還原資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sqlcmd還原資料庫

發布時間: 2023-01-06 06:45:22

1. 打開sql資料庫提示被使用

其實這說起來還是滿復雜的```你這要是看不懂的話``我看你就叫些專業人士來搞吧```你這問題我是按下面漫漫試,試好的
連接到 SQL Server 的實例時收到錯誤消息:「Cannot open user default database」(無法打開用戶默認資料庫)
【全文】原因
用戶默認資料庫在連接時不可用。這可能是因為該資料庫: • 處於可疑模式。
• 不再存在。
• 處於單用戶模式,並且唯一可用的連接已由其他用戶或事物使用。
• 已被分離。
• 已設置為 RESTRICTED_USER 狀態。
• 處於離線狀態。
• 設置為緊急狀態。
• 不具有映射到用戶的登錄帳戶,或者該用戶已被拒絕訪問
此外,該登錄帳戶可能是多個組的成員,且其中一個組的默認資料庫在連接時不可用。
SQL Server 2005
在 SQL Server 2005 中,可以使用 sqlcmd 實用程序更改默認資料庫。為此,請按照下列步驟操作: 1. 單擊「開始」,單擊「運行」,鍵入 cmd,然後按 Enter。
2. 根據 SQL Server 登錄使用的身份驗證種類,請使用以下方法之一: • 如果 SQL Server 登錄使用 Microsoft Windows 身份驗證連接到該實例,請在命令提示符處鍵入以下內容,然後按 Enter:
sqlcmd –E -S InstanceName –d master
• 如果 SQL Server 登錄使用 SQL Server 身份驗證連接到該實例,請在命令提示符處鍵入以下內容,然後按 Enter:
sqlcmd -S InstanceName -d master -U SQLLogin -P Password
注意:InstanceName 是要連接到的 SQL Server 2005 實例的名稱的佔位符。SQLLogin 是已刪除其默認資料庫的 SQL Server 登錄的佔位符。Password 是 SQL Server 登錄密碼的佔位符。
3. 在 sqlcmd 提示符處,鍵入以下內容,然後按 Enter:
Alter LOGIN SQLLogin WITH DEFAULT_DATABASE = AvailDBName
注意:AvailDBName 是可由實例中 SQL Server 登錄訪問的現有資料庫的名稱的佔位符。
4. 在 sqlcmd 提示符處,鍵入 GO,然後按 Enter。
SQL Server 2000 和 SQL Server 7.0
在 SQL Server 2000 和 SQL Server 7.0 中,可以使用 osql 實用程序更改默認資料庫。為此,請按照下列步驟操作: 1. 在命令提示符處,鍵入以下內容,然後按 Enter:
C:\>osql -E
2. 在「osql」提示符處,鍵入以下內容,然後按 Enter:
1>sp_defaultdb 'user's_login', 'master'
3. 在第二個提示符處,鍵入以下內容,然後按 Enter:
2>go
更簡單明了的:
無法打開用戶默認資料庫,登錄失敗,這也是SQL Server使用者熟悉的問題之一。在使用企業管理器、查詢分析器、各類工具和應用軟體的時候,只要關繫到連接SQL Server資料庫的時候,都有可能會碰到此問題,引起此錯誤發生的原因比較多,下面我們就來詳細分析引起此問題的原因以及解決辦法。
一、原因
登錄帳戶的默認資料庫被刪除。
二、解決方法:
(1)、使用管理員帳戶修改此帳戶的默認資料庫
1、打開企業管理器,展開伺服器組,然後展開伺服器
2. 展開"安全性",展開登錄,右擊相應的登錄帳戶,從彈出的菜單中選擇,屬性
3、重新選擇此登錄帳戶的默認資料庫
(2)、若沒有其他管理員登錄帳戶,無法在企業管理器里修改,使用isql命令行工具
isql /U"sa" /P"sa的密碼" /d"master" /Q"exec sp_defaultdb N'sa', N'master'"
如果使用Windows驗證方式,使用如下命令:
isql /E /d"master" /Q"exec sp_defaultdb N'BUILTIN\Administrators', N'master'"
注:上述isql命令可以直接在命令提示符下輸入。
第二篇:
無法打開用戶默認資料庫 登錄失敗
無法打開用戶默認資料庫,登錄失敗,這也是SQL Server使用者熟悉的問題之一。在使用企業管理器、查詢分析器、各類工具和應用軟體的時候,只要關繫到連接SQL Server資料庫的時候,都有可能會碰到此問題,引起此錯誤發生的原因比較多,下面我們就來詳細分析引起此問題的原因以及解決辦法。
一、原因
登錄帳戶的默認資料庫被刪除。
二、解決方法:
(一)、使用管理員帳戶修改此帳戶的默認資料庫
1、打開企業管理器,展開伺服器組,然後展開伺服器
2. 展開"安全性",展開登錄,右擊相應的登錄帳戶,從彈出的菜單中選擇,屬性
3、重新選擇此登錄帳戶的默認資料庫
-- 登錄都沒法,安全性節點似乎沒法打開。
(二)、若沒有其他管理員登錄帳戶,無法在企業管理器里修改,使用isql命令行工具
isql /U"sa" /P"sa的密碼" /d"master" /Q"exec sp_defaultdb N'sa', N'master'"
如果使用Windows驗證方式,使用如下命令:
isql /E /d"master" /Q"exec sp_defaultdb N'BUILTIN\Administrators', N'master'"
參考:微軟中文知識庫文章:如何解決 SQL Server 2000 中的連接問題
地址:http://support.microsoft.com/default.aspx?scid=kb;ZH-CN;827422
出現本錯誤的情況一般如下:
將一個資料庫導入MS SQL資料庫中,在企業管理器中,所有任務->還原資料庫—>選擇「從設備」還原,找到資料庫文件「xxx.db」,導入。
報錯:設備激活錯誤,請使用with move選項來標志該文件的有效位置。
解決方法:右鍵點「資料庫」(注意不是某個特定的資料庫)—>所有任務—>還原資料庫—>選擇「從設備」還原,選擇要還原成的資料庫名,然後在選項卡中,選擇現有資料庫上強制還原資料庫,然後在下面修改資料庫還原後的物理路徑,這個路徑要是存在的一個路徑,否則就會出現上面的錯誤,邏輯文件名可以不用改,即可。
只要用不同默認資料庫的用戶登錄就可以了。[--各個用戶的默認資料庫]
編輯SQL Server 注冊,改為SQL Server身份驗證,用sa登錄就可以了
sa的默認資料庫被分離 -> 重裝SQL Server。

2. asp.net操作 sql2008備份、還原!高分懸賞!

#region 「備份當前資料庫」按鈕事件
/// <summary>
/// 「備份當前資料庫」按鈕事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button1_Click(object sender, EventArgs e)
{
string dbname = "YT_FH";//資料庫名稱
string bkName = "YT_FH" + ".bak";//文件名

string bkUrl = "/BAK/" + Guid.NewGuid().ToString("N") + bkName;//備份文件存儲路徑

if (BackUpDataBase(dbname, bkUrl))
{
if (MsDb.Exec("insert into DBbak(name,path,uptime) values('YT_FH.bak','" + bkUrl + "','" + DateTime.Now + "')") == 1)
{
ClientJS.Alert("備份成功!");
Response.Redirect("BackupRestore.aspx");
}
else
{
ClientJS.Alert("失敗!");
}
}
}
#endregion

#region 「上傳並還原」按鈕事件
/// <summary>
/// 「上傳並還原」按鈕事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button2_Click(object sender, EventArgs e)
{

if (FileUpload1.FileName == "")
{
BASE.COMMON.ClientJS.Alert("請選擇文件!"); return;
}
else
{
string name = FileUpload1.FileName;
FileUpload1.PostedFile.SaveAs(Server.MapPath("/BAK/YT_FH.bak"));
}

//
string finalpath = "~/BAK/YT_FH.bak";

if (!FileUpload1.HasFile)
{
ClientJS.Alert("請選擇備份文件!"); return;
}

FileUpload1.PostedFile.SaveAs(Server.MapPath(finalpath));

string strDBName = "YT_FH";
if (RestoreDataBase(strDBName, Server.MapPath(finalpath)))
{
ClientJS.AlertUrl("資料庫恢復成功!", "Refresh.aspx");
}
else
{
ClientJS.ScriptFirst("alert('資料庫恢復失敗!');");
}
}
#endregion

#region 資料庫恢復按鈕事件
/// <summary>
/// 資料庫恢復按鈕事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button3_Click(object sender, EventArgs e)
{
string bkName = "YT_FH";
string bkUrl = "C:\\DB_BackUp\\" + bkName + ".bak";
if (RestoreDataBase(bkName, bkUrl))
{
ClientJS.AlertRefresh("資料庫恢復成功!");
}
else
{
ClientJS.ScriptFirst("alert('資料庫恢復失敗!');");
}
}
#endregion

#region 資料庫備份方法
/// <summary>
/// 資料庫備份方法
/// </summary>
/// <param name="databasename">資料庫名稱</param>
/// <param name="backuptodatabase">備份文件輸出路徑</param>
/// <returns>成功/失敗</returns>
public bool BackUpDataBase(string databasename, string backuptodatabase)
{
string sql;

//備份資料庫到指定的資料庫文件(完全備份)
sql = "BACKUP DATABASE " + databasename + " TO DISK='" + Server.MapPath(backuptodatabase) + "' WITH INIT";

try
{
MsDb.Exec(sql);
}
catch { return false; }
return true;
}
#endregion

#region 資料庫恢復方法
/// <summary>
/// 資料庫恢復方法
/// </summary>
/// <param name="databasename">資料庫名稱</param>
/// <param name="databasefile">備份文件路徑</param>
/// <returns>成功/失敗</returns>
public bool RestoreDataBase(string databasename, string databasefile)
{
RefreshDataBase(databasename);

//還原指定的資料庫文件
string sql = "RESTORE DATABASE " + databasename + " FROM DISK = '" + databasefile + "' WITH REPLACE;";

SqlConnection con = new SqlConnection(@"server=192.168.0.74\SQLSERVER2008;uid=sa;pwd=123123;");

try
{
con.Open();
SqlCommand sqlcmd = new SqlCommand(sql, con);
sqlcmd.CommandType = CommandType.Text;
sqlcmd.ExecuteNonQuery();
}
catch (Exception err)
{
string str = err.Message;

return false;
}
finally
{
con.Close();//關閉資料庫連接
}
return true;
}
#endregion

#region 關閉需備份的資料庫
/// <summary>
/// 關閉需備份的資料庫
/// </summary>
/// <param name="databasename">資料庫名稱</param>
public void RefreshDataBase(string databasename)
{
string sql = "use master;ALTER DATABASE " + databasename + " SET OFFLINE WITH ROLLBACK IMMEDIATE;";
SqlConnection con = new SqlConnection(@"server=192.168.0.74\SQLSERVER2008;uid=sa;pwd=123123;");
try
{
con.Open();
SqlCommand cmd = new SqlCommand(sql, con);
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
string str = ex.Message;
con.Close();
}
finally
{
con.Close();
}
}
#endregion

這個是之前我用過的,是sql2008的資料庫

3. SQL如何實現帶進度條的資料庫備份和還原

  • ///

  • ///備份方法

  • ///

  • SQLDMO.Backupbackup=newSQLDMO.BackupClass();

  • SQLDMO.SQLServerserver=newSQLDMO.SQLServerClass();

  • //顯示進度條

  • SQLDMO.BackupSink_=newSQLDMO.BackupSink_PercentCompleteEventHandler(Step);

  • backup.PercentComplete+=progress;

  • try

  • {

  • server.LoginSecure=false;

  • server.Connect(".","sa","sa");

  • backup.Action=SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;

  • backup.Database="test";

  • backup.Files=@"D:/test/myProg/backupTest";

  • backup.BackupSetName="test";

  • backup.BackupSetDescription="Backupthedatabaseoftest";

  • backup.Initialize=true;

  • backup.SQLBackup(server);

  • MessageBox.Show("Backupsuccessed.");

  • }

  • catch(Exceptionex)

  • {

  • MessageBox.Show(ex.Message);

  • }

  • finally

  • {

  • server.DisConnect();

  • }

  • this.pbDB.Value=0;

  • ///

  • ///還原方法

  • ///

  • SQLDMO.Restorerestore=newSQLDMO.RestoreClass();

  • SQLDMO.SQLServerserver=newSQLDMO.SQLServerClass();

  • //顯示進度條

  • SQLDMO.RestoreSink_=newSQLDMO.RestoreSink_PercentCompleteEventHandler(Step);

  • restore.PercentComplete+=progress;

  • //KILLDataBaseProcess

  • SqlConnectionconn=newSqlConnection("Server=.;Database=master;UserID=sa;Password=sa;Trusted_Connection=False");

  • conn.Open();

  • SqlCommandcmd=newSqlCommand("SELECTspidFROMsysprocesses,sysdatabasesWHEREsysprocesses.dbid=sysdatabases.dbidANDsysdatabases.Name='test'",conn);

  • SqlDataReaderdr;

  • dr=cmd.ExecuteReader();

  • ArrayListlist=newArrayList();

  • while(dr.Read())

  • {

  • list.Add(dr.GetInt16(0));

  • }

  • dr.Close();

  • for(inti=0;i<list.Count;i++)

  • {

  • cmd=newSqlCommand(string.Format("KILL{0}",list),conn);

  • cmd.ExecuteNonQuery();

  • }

  • conn.Close();

  • try

  • {

  • server.LoginSecure=false;

  • server.Connect(".","sa","sa");

  • restore.Action=SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;

  • restore.Database="test";

  • restore.Files=@"D:/test/myProg/backupTest";

  • restore.FileNumber=1;

  • restore.ReplaceDatabase=true;

  • restore.SQLRestore(server);

  • MessageBox.Show("Restoresuccessed.");

  • }

  • catch(Exceptionex)

  • {

  • MessageBox.Show(ex.Message);

  • }

  • finally

  • {

  • server.DisConnect();

  • }

  • this.pbDB.Value=0;

4. sqlserver的master資料庫還原的具體問題(我是菜鳥)

單用戶模式,斷開網路連接,只你一個連接SQL
命令提示符,開始,運行,輸入CMD回車

5. Sql2005如何備份資料庫

mangerstudion連接到你的實例,打開"對象資源管理器",沒有看到的話,按f8
展開實例--管理--維護計劃
右鍵"維護計劃"--新建維護計劃--輸入維護計劃名稱--這樣會出現創建維護計劃的窗口然後,在左邊的工具箱中(沒有的話,按ctrl+alt+x),將"備份資料庫任務"拖到中間的黃色區域
雙擊拖出來的這個任務,會出現設計屬性的窗口
在資料庫中,選擇你要備份的資料庫,然後設置備份到那裡,並且設置備份的文件名
設計好後,單擊"確定",你也可以單擊"t-sql",看看sql大致會用什麼樣的語句來處理你的需求.
單擊"計劃"後面的"..."按鈕,設置執行的時間計劃.
最後保存就可以了.
把sqlagent服務設置為自動啟動

6. 資料庫的備份、恢復方式(以一種數據為例說明)。

以 SQL Server 為例:

E:\>sqlcmd -S "localhost\SQLEXPRESS"
1> use master
2> go
已將資料庫上下文更改為 'master'。

備份
1> backup database test to disk='e:\test.dat'
2> go

恢復
1> restore database test from disk='e:\test.dat'
2> go
已為資料庫 'test',文件 'Test' (位於文件 1 上)處理了 232 頁。
已為資料庫 'test',文件 'Test_log' (位於文件 1 上)處理了 2 頁。
RESTORE DATABASE 成功處理了 234 頁,花費 0.184 秒(9.898 MB/秒)。

7. 用cmd命令sql server導入bak文件

1.新建一個空資料庫
2.右鍵-任務-還原-資料庫
3.選擇逗源設備地,點擊選擇
4.選擇逗文件地,點擊添加------找到你的bak,點擊確定
5.回到前一個頁面,點擊選項,勾選逗覆蓋現有資料庫地
6.ok

8. 資料庫還原失敗。

主要原因應該是資料庫備份不完整或者損壞.
最好的資料庫物理方法應該是單獨保存mdf(主資料庫文件)和ldf(事務日誌文件)
然後通過企業管理器,右鍵附加資料庫來完成還原.
LZ可以試著去下載SQL
Server資料庫修復軟體來解決,注意版本要匹配

9. .net(c#)還原sql server 2005資料庫,出錯因為資料庫正在使用,所以無法獲得對資料庫的獨占訪問權。

cmd.ExecuteNonQuery();
con.Close();
你是在它執行之後才釋放,當然會一樣的出現訪問無效,建議停止這個sqlserver的服務才去還原,如果你知道停止sqlserver進程的代碼也可以!

10. sql server 用cmd還原資料庫只有bak文件,沒有mdf,log文件可以還原嗎(不在同)

樓主,cmd?
bak是資料庫備份文件。
應用企業管理器或是SQL Server Management Studio 登錄資料庫管理,還原即可!當然,資料庫版本要與原來的一致,或是高於原有版本,一般都ok。
(*^__^*) 嘻嘻……