轉自msdn
本頁
概要
何為 Osql?
如何使用 Osql?
交互式輸入 Transact-SQL 語句
提交 Osql 作業
連接到 SQL Server 桌面引擎 (MSDE 2000)
管理 MSDE 2000
新建登錄帳戶
訪問數據庫
如何更改登錄密碼
創建數據庫
備份和還原數據庫
附加和分離數據庫
參考
這篇文章中的信息適用於:
概要
“SQL Server 桌面引擎”(也叫 MSDE 2000)沒有自己的用戶界面,因為它主要設計為在後台運行。用戶通過 MSDE 2000 嵌入的程序與它交互。隨 MSDE 2000 提供的唯一工具是 osql 。可執行文件 Sql.exe 在 MSDE 2000 的默認實例的 MSSQL\Binn 文件夾中。本文重點討論如何通過使用 osql 工具管理 MSDE 2000。
回到頂端
何為 Osql?
osql 工具是一個 Microsoft Windows 32 命令提示符工具,您可以使用它運行 Transact-SQL 語句和腳本文件。osql 工具使用 ODBC 數據庫應用程序編程接口 (API) 與服務器通訊。
回到頂端
如何使用 Osql?
一般情況下,可以這樣使用 osql 工具:
• 用戶通過與使用命令提示符時相似的方式交互輸入 Transact-SQL 語句。
• 用戶提交 osql 作業,方法是: • 指定單個要運行的 Transact-SQL 語句。 - 或 -
• 將該工具指向一個包含要運行的 Transact-SQL 語句的腳本文件。
交互式輸入 Transact-SQL 語句
如要顯示 osql 工具的區分大小寫的選項列表,請在命令提示符下鍵入如下內容,然後按 ENTER 鍵:
osql -?
如想了解關於 osql 工具的每一選項的更多信息,請參見“SQL Server 聯機圖書”中的“osql Utility”主題。
如要交互輸入 Transact-SQL 語句,請按照下列步驟操作:
1. 確認 MSDE 2000 正在運行。
2. 連接到 MSDE 2000(有關更多信息,請參見標題為“連接到 SQL Server 桌面引擎 (MSDE 2000)”的部分)。
3. 在 osql 命令提示符下,鍵入 Transact-SQL 語句,然後按 ENTER 鍵。 當您在輸入的每一行後按 ENTER 鍵時,osql 將緩存該命令行上的語句。
• 如要運行當前緩存的語句,請鍵入“Go”,接著按 ENTER 鍵。
• 如要運行一批 Transact-SQL 語句,請分別在單獨的行上輸入每一個 Transact-SQL 命令。然後,在最後一行上鍵入“Go”以表示批處理命令的結束並運行當前緩存的語句。
運行結果出現在控制台窗口。
4. 當您在輸入的每一行後按 ENTER 鍵時,如想從 osql 退出,請鍵入 QUIT 或 EXIT,並按 ENTER 鍵。
提交 Osql 作業
一般情況下,您可以用兩種方法之一提交 osql 作業。您可以: • 指定單個 Transact-SQL 語句。
- 或 -
• 將該工具指向一個腳本文件。
下面將詳細介紹每一種方法。
指定單個 Transact-SQL 語句
如要針對 MSDE 2000 的本地默認實例運行 Transact-SQL,請鍵入與下面這一個類似的命令:
osql -E -q "Transact-SQL statement"
其中
• -E 表示使用 Microsoft Windows NT 身份驗證。
-而-
• -q 表示運行 Transact-SQL 語句,但是在查詢結束時不退出 osql。
如要運行 Transact-SQL 語句並退出 osql,請使用 -Q 參數來代替 -q。
將該工具指向一個腳本文件
如要將該工具指向一個腳本文件,請按照下列步驟操作: 1. 創建一個包含一批 Transact-SQL 語句的腳本文件(如 myQuerIEs.sql)。
2. 打開命令提示符,鍵入與下面類似的一個命令,然後按 ENTER 鍵:
osql -E -i input_file
其中
input_file 是腳本文件及其完整路徑。例如,如果腳本文件 myQueries.sql 在 C:\Queries 文件夾中,請將參數 input_file 替換為 C:\Queries\myQuerIEs.sql。
該腳本文件的運行結果將出現在控制台窗口中。如果您想將運行結果定向到一個文件,請向上述命令中添加 -ooutput_file 參數。例如:
osql -E -i input_file -o output_file
其中
output_file 是輸出文件及其完整路徑。
如想消除輸出結果中的編號和提示符號,請向上述命令中添加 -n 選項。例如:
osql -E -i input_file -o output_file -n
回到頂端
連接到 SQL Server 桌面引擎 (MSDE 2000)
如要連接到 MSDE 2000,請按照下列步驟操作: 1. 確認 MSDE 2000 正在運行。
2. 在承載您要連接的 MSDE 2000 實例的計算機上打開一個命令窗口。
3. 鍵入下面的命令,然後按 ENTER 鍵:
osql -E
這可以通過使用 Windows 身份驗證將您連接到 MSDE 2000 的本地默認實例。
如要連接到 MSDE 2000 的一個命名實例,請鍵入:
osql -E -S servername\instancename
如果您收到了下面的錯誤消息,表明 MSDE 2000 可能未在運行,或者您可能為安裝的 MSDE 2000 的命名實例提供了錯誤的名稱:
[Shared Memory]SQL Server does not exist or Access denIEd.
[Shared Memory]ConnectionOpen (Connect()).
如果您成功連接到了該服務器,就會出現下面的提示:
1>
此提示表示 osql 已啟動。現在,您可以交互輸入 Transact-SQL 語句,運行結果將出現在命令提示行上。
回到頂端
管理 MSDE 2000
本文下面的部分將向您簡單介紹管理 MSDE 2000 時最常用的 Transact-SQL 命令。
新建登錄帳戶
未提供有效登錄 id 的用戶無法連接到 SQL Server。可調用 sp_grantlogin 存儲過程來授權一個 Microsoft Windows 網絡帳戶(一個組或者一個用戶帳戶),使之作為一個使用 Windows 身份驗證連接到 SQL Server 實例的 SQL Server 登錄帳戶。下面的示例允許一個名為 Corporate\Test 的 Windows NT 用戶連接到 SQL Server 實例:
EXEC sp_grantlogin 'Corporate\Test'
只有 sysadmin 或 securityadmin 固定服務器角色的成員可以運行 sp_grantlogin 存儲過程。有關這些角色的更多信息,請參見“SQL Server 聯機圖書”中“Roles, SQL Server Archite
有關 sp_grantlogin 存儲過程的更多信息,請參見“SQL Server 聯機圖書”中的“sp_grantlogin, Transact-SQL Reference”主題。
您可以使用 sp_addlogin 存儲過程創建一個使用 SQL Server 身份驗證建立 SQL Server 連接的新登錄帳戶。下面的示例為一個名叫“test”的用戶創建了一個密碼為“hello”的 SQL Server 登錄:
EXEC sp_addlogin 'test','hello'
只有 sysadmin 和 securityadmin 固定服務器角色的成員可以運行 sp_addlogin 存儲過程。有關 sp_addlogin 存儲過程的更多信息,請參見“SQL Server 聯機圖書”中的“sp_addlogin, Transact-SQL Reference”主題。
訪問數據庫
在用戶連接到 SQL Server 的一個實例後,他們只有在 dbo 授予他們對數據庫的訪問權後才可以在數據庫中執行活動。您可以使用 sp_grantdbAccess 存儲過程為新用戶向當前數據庫中添加一個安全帳戶。下面的示例為一個名叫 Corporate\BobJ 的 Microsoft Windows NT 的用戶向當前數據庫添加了一個帳戶,並將其命名為“Bob”:
EXEC sp_grantdbAccess 'Corporate\BobJ', 'Bob'
sp_adduser 存儲過程執行與 sp_grantdbAccess 存儲過程相同的功能。
因為包括 sp_adduser 存儲過程是為了向後兼容,所以 Microsoft 建議您使用 sp_grantdbacess 存儲過程。只有 sysadmin 固定服務器角色、db_Accessadmin 和 db_owner 固定數據庫角色的成員才可以運行 sp_grantdbaccess 存儲過程。有關 sp_grantdbAccess 存儲過程的更多信息,請參見“SQL Server 聯機圖書”中的“sp_grantdbAccess, Transact-SQL Reference”主題。
如何更改登錄密碼
如要修改登錄密碼,請使用 sp_passWord 存儲過程。下面的示例將“test”登錄的密碼從“ok”更改為“hello”:
EXEC sp_passWord 'ok', 'hello','test'
執行權限默認授予正在更改其自己的登錄密碼的用戶的公共角色。只有 sysadmin 角色才可以為其他用戶更改登錄密碼。有關 sp_passWord 存儲過程的更多信息,請參見“SQL Server 聯機圖書中”的“sp_passWord, Transact-SQL Reference”主題。
創建數據庫
MSDE 2000 數據庫由一個表的集合組成,這些表中包含數據和其他對象,如視圖、索引、存儲過程和事件觸發器,這些內容定義為支持對數據執行的各種活動。如要創建 MSDE 2000 數據庫,請使用“CREATE DATABASE”Transact-SQL 命令。有關 創建數據庫的更多信息,請參見“SQL Server 聯機圖書”中的“Creating a Database”主題。
下面的示例創建了一個名為 Test 的數據庫。因為沒有向該命令行添加其他參數,所以 Test 數據庫將與 model 數據庫大小相同:
CREATE DATABASE Test
CREATE DATABASE 權限默認授予 sysadmin 和 dbcreator 固定服務器角色的成員。有關“CREATE DATABASE”命令的更多信息,請參見“SQL Server 聯機圖書”中的“CREATE DATABASE, Transact-SQL Reference”主題。
如要創建一個新的數據庫對象,請使用“CREATE Transact-SQL”命令。例如,要新建一個表,請使用“CREATE TABLE”Transact-SQL 命令。有關更多信息,請參考“SQL Server 聯機圖書”。
備份和還原數據庫
SQL Server 的備份和還原組件為保護存儲在 SQL Server 數據庫中的關鍵數據提供了一個重要的保護措施。
通過適當的規劃,您可以從許多故障中恢復,包括:
• 存儲媒體故障。
• 用戶錯誤。
• 服務器的永久丟失。
另外,備份和還原數據庫還有其他方面的用途,例如將數據庫從一個服務器復制到另一個服務器。通過從一台計算機上備份一個數據庫和將此數據庫還原到另一台計算機上,您可以快速方便地制作數據庫的副本。
有關數據庫備份和還原操作方面的更多信息,請參見“SQL Server 聯機圖書”中的“Backing Up and Restoring Databases”主題。
下面的示例為一個名為 mydb的數據庫執行完全數據庫備份,將此備份命名為 Mydb.bak,然後將此備份存儲在 C:\Msde\Backup 文件夾中。
BACKUP DATABASE mydb TO DISK = 'C:\MSDE\Backup\mydb.bak'
下面的示例為一個名為 mydb 的數據庫執行日志備份,將此備份命名為 Mydb_log.bak,然後將其存儲在 C:\Msde\Backup 文件夾中:
BACKUP LOG mydb TO DISK = 'C:\MSDE\Backup\mydb_log.bak'
BACKUP DATABASE 和 BACKUP LOG 權限默認授予 sysadmin 固定服務器角色以及 db_owner 和 db_backupOperator 固定數據庫角色的成員。有關 BACKUP 語句的更多信息,請參見“SQL Server 聯機圖書”中的“BACKUP, Transact-SQL Reference”主題。
MSDE 包括 SQL Server 代理程序服務用以管理安排的作業。例如,您可以創建並安排一個 Transact-SQL 備份作業。SQL Server 代理程序服務管理作業安排。如想查看演示如何在 MSDE 2000 中使用各種存儲過程執行和安排備份的示例代碼,請參見下面的 Microsoft 知識庫文章:
241397 (http://support.microsoft.com/kb/241397/EN-US/) HOWTO:Back Up a Microsoft Data Engine Database with Transact-SQL
有關 SQL Server 代理程序服務的更多信息,
備份數據庫只是全部過程的一半。知道如何從備份中還原數據庫也非常重要。下面的示例將一個名為 mydb 的數據庫從備份文件 C:\Msde\Backup\Mydb.bak 中還原:
RESTORE DATABASE mydb FROM DISK ='C:\MSDE\Backup\mydb.bak'
如果將要還原的數據庫不存在,則用戶必須具有 CREATE DATABASE 權限才可以運行 RESTORE 語句。如果該數據庫存在,則 RESTORE 權限默認授予 sysadmin 和 dbcreator 固定服務器角色的成員,以及該數據庫的所有者 (dbo)。有關 RESTORE 語句的更多信息,請參見“SQL Server 聯機圖書”中的“RESTORE, Transact-SQL Reference”主題。
附加和分離數據庫
可以分離一個數據庫的數據和事務日志文件然後將其重新附加到另一個服務器,或重新附加到同一服務器。分離一個數據庫雖然從 SQL Server 中刪除了該數據庫,但構成該數據庫的數據和事務日志文件沒有任何改動。 然後您可以使用這些數據和事務日志文件將該數據庫附加到任何 SQL Server 實例,其中包括從中分離該數據庫的那一服務器。這使該數據庫能夠以與在被分離時完全相同的狀態供在其他位置使用。有關更多信息,請參見 “SQL Server 聯機圖書”中的“Attaching and Detaching a Database”主題。
下面的示例將一個名為 mydb 的數據庫從 SQL Server 的當前實例中分離出來:
EXEC sp_detach_db 'mydb'
&nb
您正在看的SQLserver教程是:HOW TO使用 Osql 工具管理 SQL Server 桌面引擎 (MSDE 2000。sp;
只有 sysadmin 固定服務器角色的成員才可以運行 sp_detach_db 存儲過程。有關 sp_detach_db 存儲過程的更多信息,請參見“SQL Server 聯機圖書”中的“sp_detach_db, Transact-SQL Reference”主題。
下面的示例將來自名為 mydb 的數據庫的兩個文件附加到 SQL Server 的當前實例:
EXEC sp_attach_db @dbname = N'mydb',
@filename1 = N'C:\MSDE\Backup\mydb.mdf',
@filename2 = N'C:\MSDE\Backup\mydb.ldf'
大寫字母“N”用來給“Unicode 字符串”常量添加前綴。“N”前綴代表 SQL-92 標准中的區域語言。有關詳細信息,請參見 Microsoft 知識庫中的以下文章:
239530 (http://support.microsoft.com/kb/239530/EN-US/) INF:Unicode String Constants in SQL Server Require N Prefix
只有 sysadmin 和 dbcreator 固定服務器角色的成員才可以運行此過程。有關 sp_attach_db 存儲過程的更多信息,請參見“SQL Server 聯機圖書”中的“sp_attach_db, Transact-SQL Reference”主題。 下面關於 osql 工具使用方面的信息適用於所有版本的 Microsoft SQL Server 2000。
回到頂端
參考
如要下載“SQL Server 2000 聯機圖書”的更新版本,請訪問下面的 Microsoft Web 站點:
http://www.microsoft.com/sql/techinfo/productdoc/2000/books.asp (http://support.microsoft.com/?scid=http%3a%2f%2fwww.microsoft.com%2fsql%2ftechinfo%2fproductdoc%2f2000%2fbooks.ASP)
如要下載“SQL Server 聯機圖書”的 SQL Server 7.0 版,請訪問下面的 Microsoft Web 站點:
http://download.microsoft.com/download/SQL70/File/2/Win98/En-US/SQLBOL.exe (http://download.microsoft.com/download/sql70/file/2/win98/en-us/sqlbol.exe)
有關 MSDE 2000 的更多信息,請參見下列 Microsoft 知識庫文章:
319930 (http://support.microsoft.com/kb/319930/EN-US/) HOW TO:Connect to Microsoft Desktop Engine
241397 (http://support.microsoft
.com/kb/241397/EN-US/) HOWTO:Back Up a Microsoft Desktop Engine Database with Transact-SQL