1.概要
“SQL Server 桌面引擎”(也叫 MSDE 2000)没有自己的用户界面,因为它主要设计为在后台运行。用户通过 MSDE 2000 嵌入的程序与它交互。随 MSDE 2000 提供的唯一工具是 osql 。可执行文件 Sql.exe 在 MSDE 2000 的默认实例的 MSSQLBinn 文件夹中。本文重点讨论如何通过使用 osql 工具管理 MSDE 2000。
2.何为 Osql?
osql 工具是一个Microsoft Windows 32 命令提示符工具,您可以使用它运行 Transact-SQL 语句和脚本文件。osql 工具使用 ODBC 数据库应用程序编程接口 (API) 与服务器通讯。
3.如何使用 Osql?
一般情况下,可以这样使用osql 工具:
• 用户通过与使用命令提示符时相似的方式交互输入 Transact-SQL 语句。
• 用户提交 osql 作业,方法是: • 指定单个要运行的Transact-SQL 语句。 - 或 -
• 将该工具指向一个包含要运行的 Transact-SQL 语句的脚本文件。
交互式输入Transact-SQL 语句
如要显示 osql 工具的区分大小写的选项列表,请在命令提示符下键入如下内容,然后按ENTER 键:
osql -?
如想了解关于 osql 工具的每一选项的更多信息,请参见“SQL Server 联机图书”中的“osql Utility”主题。
4.如要交互输入 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-SQLstatement"
其中
• -E 表示使用 Microsoft Windows NT 身份验证。
• -q 表示运行 Transact-SQL 语句,但是在查询结束时不退出 osql。
如要运行Transact-SQL 语句并退出 osql,请使用 -Q 参数来代替 -q。
将该工具指向一个脚本文件
如要将该工具指向一个脚本文件,请按照下列步骤操作:
创建一个包含一批Transact-SQL 语句的脚本文件(如myQueries.sql)。
打开命令提示符,键入与下面类似的一个命令,然后按 ENTER 键:
osql -E -i input_file
其中 input_file 是脚本文件及其完整路径。例如,如果脚本文件 myQueries.sql 在 C:Queries 文件夹中,请将参数 input_file 替换为 C:QueriesmyQueries.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桌面引擎 (MSDE2000)
如要连接到 MSDE2000,请按照下列步骤操作: 1.确认 MSDE 2000 正在运行。
在承载您要连接的 MSDE2000 实例的计算机上打开一个命令窗口。
键入下面的命令,然后按ENTER 键:
osql -E
这可以通过使用Windows 身份验证将您连接到 MSDE2000 的本地默认实例。
如要连接到 MSDE2000 的一个命名实例,请键入:
osql -E -S servernameinstancename
如果您收到了下面的错误消息,表明 MSDE 2000 可能未在运行,或者您可能为安装的 MSDE 2000 的命名实例提供了错误的名称:
[Shared Memory]SQL Server does not exist oraccess denied.
[Shared Memory]ConnectionOpen (Connect()).
如果您成功连接到了该服务器,就会出现下面的提示:
命令提示符:1>
此提示表示 osql 已启动。现在,您可以交互输入 Transact-SQL 语句,运行结果将出现在命令提示行上。
osql 的使用方法
1.>连接数据库(sa 为连接的用户名,714 是密码)
osql -U sa -P714
osql -E (与信任的用户连接)
2.>执行sql脚本文件
osql -U sa -P 714 -i file.sql
osql -Efile.sql
3.>备份数据库(test是我要备份的数据库名,将其备份到C盘,并命名为:mydb.bak)
BACKUP DATABASEtest TO DISK = 'C:/mydb.bak'
4.>将一个名为 test 的数据库从备份文件 C:/Mydb.bak 中还原
RESTORE DATABASEmydb FROM DISK ='C:mydb.bak'
5.>将一个名为 mydb 的数据库从 SQL Server 的当前实例中分离出来
EXECsp_detach_db 'mydb'
6.>将来自名为 mydb 的数据库的两个文件附加到 SQL Server
EXEC sp_attach_db @dbname = N'mydb',
@filename1 = N'C:/mydb.mdf',
@filename2 = N'C:/mydb.ldf'
管理 MSDE 2000
本文下面的部分将向您简单介绍管理 MSDE 2000 时最常用的 Transact-SQL 命令。
新建登录帐户
未提供有效登录 id 的用户无法连接到 SQL Server。可调用 sp_grantlogin 存储过程来授权一个 Microsoft Windows 网络帐户(一个组或者一个用户帐户),使之作为一个使用 Windows 身份验证连接到 SQL Server 实例的 SQL Server 登录帐户。下面的示例允许一个名为 CorporateTest 的 Windows NT 用户连接到 SQL Server 实例:
EXEC sp_grantlogin 'CorporateTest'
只有 sysadmin 或 securityadmin 固定服务器角色的成员可以运行 sp_grantlogin 存储过程。有关这些角色的更多信息,请参见“SQL Server 联机图书”中“Roles, SQL ServerArchitecture”主题。
有关sp_grantlogin 存储过程的更多信息,请参见“SQLServer 联机图书”中的“sp_grantlogin,Transact-SQL Reference”主题。
您可以使用sp_addlogin 存储过程创建一个使用 SQLServer 身份验证建立 SQLServer 连接的新登录帐户。下面的示例为一个名叫“test”的用户创建了一个密码为“hello”的 SQL Server 登录:
EXEC sp_addlogin 'test','hello'
只有 sysadmin 和 securityadmin 固定服务器角色的成员可以运行 sp_addlogin 存储过程。有关 sp_addlogin 存储过程的更多信息,请参见“SQL Server 联机图书”中的“sp_addlogin, Transact-SQLReference”主题。
访问数据库
在用户连接到 SQLServer 的一个实例后,他们只有在dbo 授予他们对数据库的访问权后才可以在数据库中执行活动。您可以使用 sp_grantdbaccess 存储过程为新用户向当前数据库中添加一个安全帐户。下面的示例为一个名叫 CorporateBobJ 的 Microsoft Windows NT 的用户向当前数据库添加了一个帐户,并将其命名为“Bob”:
EXEC sp_grantdbaccess 'CorporateBobJ','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”主题。