HOW TO:使用 Osql 工具管理 SQL Server 桌面引擎 (MSDE 2000)轉(zhuǎn)自msdn 本頁
概要“SQL Server 桌面引擎”(也叫 MSDE 2000)沒有自己的用戶界面,因?yàn)樗饕O(shè)計(jì)為在后臺(tái)運(yùn)行。用戶通過 MSDE 2000 嵌入的程序與它交互。隨 MSDE 2000 提供的唯一工具是 osql ??蓤?zhí)行文件 Sql.exe 在 MSDE 2000 的默認(rèn)實(shí)例的 MSSQL\Binn 文件夾中。本文重點(diǎn)討論如何通過使用 osql 工具管理 MSDE 2000。
何為 Osql?osql 工具是一個(gè) Microsoft Windows 32 命令提示符工具,您可以使用它運(yùn)行 Transact-SQL 語句和腳本文件。osql 工具使用 ODBC 數(shù)據(jù)庫應(yīng)用程序編程接口 (API) 與服務(wù)器通訊。
如何使用 Osql?一般情況下,可以這樣使用 osql 工具:
交互式輸入 Transact-SQL 語句如要顯示 osql 工具的區(qū)分大小寫的選項(xiàng)列表,請(qǐng)?jiān)诿钐崾痉骆I入如下內(nèi)容,然后按 ENTER 鍵:osql -? 如想了解關(guān)于 osql 工具的每一選項(xiàng)的更多信息,請(qǐng)參見“SQL Server 聯(lián)機(jī)圖書”中的“osql Utility”主題。 如要交互輸入 Transact-SQL 語句,請(qǐng)按照下列步驟操作:
提交 Osql 作業(yè)一般情況下,您可以用兩種方法之一提交 osql 作業(yè)。您可以:
指定單個(gè) Transact-SQL 語句 如要針對(duì) MSDE 2000 的本地默認(rèn)實(shí)例運(yùn)行 Transact-SQL,請(qǐng)鍵入與下面這一個(gè)類似的命令: osql -E -q "Transact-SQL statement" 其中
將該工具指向一個(gè)腳本文件 如要將該工具指向一個(gè)腳本文件,請(qǐng)按照下列步驟操作:
連接到 SQL Server 桌面引擎 (MSDE 2000)如要連接到 MSDE 2000,請(qǐng)按照下列步驟操作:
管理 MSDE 2000本文下面的部分將向您簡單介紹管理 MSDE 2000 時(shí)最常用的 Transact-SQL 命令。新建登錄帳戶未提供有效登錄 id 的用戶無法連接到 SQL Server??烧{(diào)用 sp_grantlogin 存儲(chǔ)過程來授權(quán)一個(gè) Microsoft Windows 網(wǎng)絡(luò)帳戶(一個(gè)組或者一個(gè)用戶帳戶),使之作為一個(gè)使用 Windows 身份驗(yàn)證連接到 SQL Server 實(shí)例的 SQL Server 登錄帳戶。下面的示例允許一個(gè)名為 Corporate\Test 的 Windows NT 用戶連接到 SQL Server 實(shí)例:
只有 sysadmin 或 securityadmin 固定服務(wù)器角色的成員可以運(yùn)行 sp_grantlogin 存儲(chǔ)過程。有關(guān)這些角色的更多信息,請(qǐng)參見“SQL Server 聯(lián)機(jī)圖書”中“Roles, SQL Server Architecture”主題。有關(guān) sp_grantlogin 存儲(chǔ)過程的更多信息,請(qǐng)參見“SQL Server 聯(lián)機(jī)圖書”中的“sp_grantlogin, Transact-SQL Reference”主題。 您可以使用 sp_addlogin 存儲(chǔ)過程創(chuàng)建一個(gè)使用 SQL Server 身份驗(yàn)證建立 SQL Server 連接的新登錄帳戶。下面的示例為一個(gè)名叫“test”的用戶創(chuàng)建了一個(gè)密碼為“hello”的 SQL Server 登錄:
只有 sysadmin 和 securityadmin 固定服務(wù)器角色的成員可以運(yùn)行 sp_addlogin 存儲(chǔ)過程。有關(guān) sp_addlogin 存儲(chǔ)過程的更多信息,請(qǐng)參見“SQL Server 聯(lián)機(jī)圖書”中的“sp_addlogin, Transact-SQL Reference”主題。訪問數(shù)據(jù)庫在用戶連接到 SQL Server 的一個(gè)實(shí)例后,他們只有在 dbo 授予他們對(duì)數(shù)據(jù)庫的訪問權(quán)后才可以在數(shù)據(jù)庫中執(zhí)行活動(dòng)。您可以使用 sp_grantdbaccess 存儲(chǔ)過程為新用戶向當(dāng)前數(shù)據(jù)庫中添加一個(gè)安全帳戶。下面的示例為一個(gè)名叫 Corporate\BobJ 的 Microsoft Windows NT 的用戶向當(dāng)前數(shù)據(jù)庫添加了一個(gè)帳戶,并將其命名為“Bob”:
sp_adduser 存儲(chǔ)過程執(zhí)行與 sp_grantdbaccess 存儲(chǔ)過程相同的功能。因?yàn)榘?sp_adduser 存儲(chǔ)過程是為了向后兼容,所以 Microsoft 建議您使用 sp_grantdbacess 存儲(chǔ)過程。 只有 sysadmin 固定服務(wù)器角色、db_accessadmin 和 db_owner 固定數(shù)據(jù)庫角色的成員才可以運(yùn)行 sp_grantdbaccess 存儲(chǔ)過程。有關(guān) sp_grantdbaccess 存儲(chǔ)過程的更多信息,請(qǐng)參見“SQL Server 聯(lián)機(jī)圖書”中的“sp_grantdbaccess, Transact-SQL Reference”主題。 如何更改登錄密碼如要修改登錄密碼,請(qǐng)使用 sp_password 存儲(chǔ)過程。下面的示例將“test”登錄的密碼從“ok”更改為“hello”:
執(zhí)行權(quán)限默認(rèn)授予正在更改其自己的登錄密碼的用戶的公共角色。只有 sysadmin 角色才可以為其他用戶更改登錄密碼。有關(guān) sp_password 存儲(chǔ)過程的更多信息,請(qǐng)參見“SQL Server 聯(lián)機(jī)圖書中”的“sp_password, Transact-SQL Reference”主題。 創(chuàng)建數(shù)據(jù)庫MSDE 2000 數(shù)據(jù)庫由一個(gè)表的集合組成,這些表中包含數(shù)據(jù)和其他對(duì)象,如視圖、索引、存儲(chǔ)過程和事件觸發(fā)器,這些內(nèi)容定義為支持對(duì)數(shù)據(jù)執(zhí)行的各種活動(dòng)。如要?jiǎng)?chuàng)建 MSDE 2000 數(shù)據(jù)庫,請(qǐng)使用“CREATE DATABASE”Transact-SQL 命令。有關(guān) 創(chuàng)建數(shù)據(jù)庫的更多信息,請(qǐng)參見“SQL Server 聯(lián)機(jī)圖書”中的“Creating a Database”主題。下面的示例創(chuàng)建了一個(gè)名為 Test 的數(shù)據(jù)庫。因?yàn)闆]有向該命令行添加其他參數(shù),所以 Test 數(shù)據(jù)庫將與 model 數(shù)據(jù)庫大小相同:
CREATE DATABASE 權(quán)限默認(rèn)授予 sysadmin 和 dbcreator 固定服務(wù)器角色的成員。有關(guān)“CREATE DATABASE”命令的更多信息,請(qǐng)參見“SQL Server 聯(lián)機(jī)圖書”中的“CREATE DATABASE, Transact-SQL Reference”主題。 如要?jiǎng)?chuàng)建一個(gè)新的數(shù)據(jù)庫對(duì)象,請(qǐng)使用“CREATE Transact-SQL”命令。例如,要新建一個(gè)表,請(qǐng)使用“CREATE TABLE”Transact-SQL 命令。有關(guān)更多信息,請(qǐng)參考“SQL Server 聯(lián)機(jī)圖書”。 備份和還原數(shù)據(jù)庫SQL Server 的備份和還原組件為保護(hù)存儲(chǔ)在 SQL Server 數(shù)據(jù)庫中的關(guān)鍵數(shù)據(jù)提供了一個(gè)重要的保護(hù)措施。通過適當(dāng)?shù)囊?guī)劃,您可以從許多故障中恢復(fù),包括:
有關(guān)數(shù)據(jù)庫備份和還原操作方面的更多信息,請(qǐng)參見“SQL Server 聯(lián)機(jī)圖書”中的“Backing Up and Restoring Databases”主題。 下面的示例為一個(gè)名為 mydb的數(shù)據(jù)庫執(zhí)行完全數(shù)據(jù)庫備份,將此備份命名為 Mydb.bak,然后將此備份存儲(chǔ)在 C:\Msde\Backup 文件夾中。
下面的示例為一個(gè)名為 mydb 的數(shù)據(jù)庫執(zhí)行日志備份,將此備份命名為 Mydb_log.bak,然后將其存儲(chǔ)在 C:\Msde\Backup 文件夾中:
BACKUP DATABASE 和 BACKUP LOG 權(quán)限默認(rèn)授予 sysadmin 固定服務(wù)器角色以及 db_owner 和 db_backupoperator 固定數(shù)據(jù)庫角色的成員。有關(guān) BACKUP 語句的更多信息,請(qǐng)參見“SQL Server 聯(lián)機(jī)圖書”中的“BACKUP, Transact-SQL Reference”主題。 MSDE 包括 SQL Server 代理程序服務(wù)用以管理安排的作業(yè)。例如,您可以創(chuàng)建并安排一個(gè) Transact-SQL 備份作業(yè)。SQL Server 代理程序服務(wù)管理作業(yè)安排。如想查看演示如何在 MSDE 2000 中使用各種存儲(chǔ)過程執(zhí)行和安排備份的示例代碼,請(qǐng)參見下面的 Microsoft 知識(shí)庫文章: 241397 (http://support.microsoft.com/kb/241397/EN-US/) HOWTO:Back Up a Microsoft Data Engine Database with Transact-SQL
有關(guān) SQL Server 代理程序服務(wù)的更多信息,請(qǐng)參見“SQL Server 聯(lián)機(jī)圖書”中的“SQL Server Agent Service”主題。 備份數(shù)據(jù)庫只是全部過程的一半。知道如何從備份中還原數(shù)據(jù)庫也非常重要。下面的示例將一個(gè)名為 mydb 的數(shù)據(jù)庫從備份文件 C:\Msde\Backup\Mydb.bak 中還原:
如果將要還原的數(shù)據(jù)庫不存在,則用戶必須具有 CREATE DATABASE 權(quán)限才可以運(yùn)行 RESTORE 語句。如果該數(shù)據(jù)庫存在,則 RESTORE 權(quán)限默認(rèn)授予 sysadmin 和 dbcreator 固定服務(wù)器角色的成員,以及該數(shù)據(jù)庫的所有者 (dbo)。有關(guān) RESTORE 語句的更多信息,請(qǐng)參見“SQL Server 聯(lián)機(jī)圖書”中的“RESTORE, Transact-SQL Reference”主題。
附加和分離數(shù)據(jù)庫可以分離一個(gè)數(shù)據(jù)庫的數(shù)據(jù)和事務(wù)日志文件然后將其重新附加到另一個(gè)服務(wù)器,或重新附加到同一服務(wù)器。分離一個(gè)數(shù)據(jù)庫雖然從 SQL Server 中刪除了該數(shù)據(jù)庫,但構(gòu)成該數(shù)據(jù)庫的數(shù)據(jù)和事務(wù)日志文件沒有任何改動(dòng)。 然后您可以使用這些數(shù)據(jù)和事務(wù)日志文件將該數(shù)據(jù)庫附加到任何 SQL Server 實(shí)例,其中包括從中分離該數(shù)據(jù)庫的那一服務(wù)器。這使該數(shù)據(jù)庫能夠以與在被分離時(shí)完全相同的狀態(tài)供在其他位置使用。有關(guān)更多信息,請(qǐng)參見 “SQL Server 聯(lián)機(jī)圖書”中的“Attaching and Detaching a Database”主題。下面的示例將一個(gè)名為 mydb 的數(shù)據(jù)庫從 SQL Server 的當(dāng)前實(shí)例中分離出來:
只有 sysadmin 固定服務(wù)器角色的成員才可以運(yùn)行 sp_detach_db 存儲(chǔ)過程。有關(guān) sp_detach_db 存儲(chǔ)過程的更多信息,請(qǐng)參見“SQL Server 聯(lián)機(jī)圖書”中的“sp_detach_db, Transact-SQL Reference”主題。 下面的示例將來自名為 mydb 的數(shù)據(jù)庫的兩個(gè)文件附加到 SQL Server 的當(dāng)前實(shí)例:
大寫字母“N”用來給“Unicode 字符串”常量添加前綴。“N”前綴代表 SQL-92 標(biāo)準(zhǔn)中的區(qū)域語言。有關(guān)詳細(xì)信息,請(qǐng)參見 Microsoft 知識(shí)庫中的以下文章:
239530 (http://support.microsoft.com/kb/239530/EN-US/) INF:Unicode String Constants in SQL Server Require N Prefix
只有 sysadmin 和 dbcreator 固定服務(wù)器角色的成員才可以運(yùn)行此過程。有關(guān) sp_attach_db 存儲(chǔ)過程的更多信息,請(qǐng)參見“SQL Server 聯(lián)機(jī)圖書”中的“sp_attach_db, Transact-SQL Reference”主題。 下面關(guān)于 osql 工具使用方面的信息適用于所有版本的 Microsoft SQL Server 2000。 |
|