Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8597343
  • 博文数量: 1413
  • 博客积分: 11128
  • 博客等级: 上将
  • 技术积分: 14685
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-13 10:03
个人简介

follow my heart...

文章分类

全部博文(1413)

文章存档

2013年(1)

2012年(5)

2011年(45)

2010年(176)

2009年(148)

2008年(190)

2007年(293)

2006年(555)

分类: 数据库开发技术

2006-08-01 08:55:15

转自msdn  accpwww 的 Blog

本页
概要 概要
  何为 Osql? 何为 Osql?
  如何使用 Osql? 如何使用 Osql?
    交互式输入 Transact-SQL 语句 交互式输入 Transact-SQL 语句
    提交 Osql 作业 提交 Osql 作业
  连接到 SQL Server 桌面引擎 (MSDE 2000) 连接到 SQL Server 桌面引擎 (MSDE 2000)
  管理 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 Architecture”主题。

有关 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_accessadmindb_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_ownerdb_backupoperator 固定数据库角色的成员。有关 BACKUP 语句的更多信息,请参见“SQL Server 联机图书”中的“BACKUP, Transact-SQL Reference”主题。


MSDE 包括 SQL Server 代理程序服务用以管理安排的作业。例如,您可以创建并安排一个 Transact-SQL 备份作业。SQL Server 代理程序服务管理作业安排。如想查看演示如何在 MSDE 2000 中使用各种存储过程执行和安排备份的示例代码,请参见下面的 Microsoft 知识库文章:
241397 () HOWTO:Back Up a Microsoft Data Engine Database with Transact-SQL
有关 SQL Server 代理程序服务的更多信息,请参见“SQL Server 联机图书”中的“SQL Server Agent Service”主题。

备份数据库只是全部过程的一半。知道如何从备份中还原数据库也非常重要。下面的示例将一个名为 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'
				
只有 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 () 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 站点:
(%3a%2f%2f%2fsql%2ftechinfo%2fproductdoc%2f2000%2fbooks.asp)
如要下载“SQL Server 联机图书”的 SQL Server 7.0 版,请访问下面的 Microsoft Web 站点:
()
有关 MSDE 2000 的更多信息,请参见下列 Microsoft 知识库文章:
319930 () HOW TO:Connect to Microsoft Desktop Engine
241397 () HOWTO:Back Up a Microsoft Desktop Engine Database with Transact-SQL
阅读(2591) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~