首页 > 数据库 >使用 Osql 工具管理 SQL Server 桌面引擎 (MSDE 2000)

使用 Osql 工具管理 SQL Server 桌面引擎 (MSDE 2000)

时间:2023-09-16 17:05:47浏览次数:47  
标签:Osql 数据库 sp Server 2000 SQL MSDE Transact


概要



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 将缓存该命令行上的语句。



运行结果出现在控制台窗口。


4.

当您在输入的每一行后按 ENTER 键时,如想从 osql 退出,请键入 QUIT 或 EXIT,并按 ENTER 键。


如要运行当前缓存的语句,请键入“Go”,接着按 ENTER 键。



如要运行一批 Transact-SQL 语句,请分别在单独的行上输入每一个 Transact-SQL 命令。然后,在最后一行上键入“Go”以表示批处理命令的结束并运行当前缓存的语句。


提交 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

回到顶端

管理 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


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


创建数据库

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 知识库文章:


(http://support.microsoft.com/kb/241397/EN-US/)

有关 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


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 知识库中的以下文章:

(http://support.microsoft.com/kb/239530/EN-US/)

只有

sysadmin

dbcreator 固定服务器角色的成员才可以运行此过程。有关

sp_attach_db 存储过程的更多信息,请参见“SQL Server 联机图书”中的“sp_attach_db, Transact-SQL Reference”主题。 下面关于

osql 工具使用方面的信息适用于所有版本的 Microsoft SQL Server 2000。


标签:Osql,数据库,sp,Server,2000,SQL,MSDE,Transact
From: https://blog.51cto.com/u_3649463/7494461

相关文章

  • 用Python编写的FTP SERVER端脚本
    1frompyftpdlib.authorizersimportDummyAuthorizer2frompyftpdlib.handlersimportFTPHandler,ThrottledDTPHandler3frompyftpdlib.serversimportFTPServer4frompyftpdlib.logimportLogFormatter5importlogging67#记录日志,这里既输出到屏幕又输......
  • 金碟星空云 sql server常用表(防遗忘)
    数据表命名基本规则:表名前缀:t_或者T_视图前缀:v_或者V_多语言表后缀:_L关联关系表后缀:_LK一、元数据元数据:t_meta_objectType元数据扩展信息表:t_meta_objectType_E元数据缓存表:T_META_OBJECTTYPECACHE元数据视图表:T_META_OBJECTTYPEVIEW元数据视图:V_META_OBJECTTYPE_L元......
  • Windows server 2022安装配置——网卡驱动配置
    Windows操作系统则更适合个人用户和家庭用户,提供了更轻量级的功能和用户体验,基本将所有功能都配置好了,用户几乎不需要作任何更改就能使用。但对Windowsserver而言,WindowsServer是专为服务器环境和企业级工作负载而设计,提供更高级的功能、安全性和管理选项。所以很多功能是用......
  • sqlserver存储过程报错:当前事务无法提交,而且无法支持写入日志文件的操作。请回滚该事
    ​ ​编辑 现象:系统出现异常,手动执行过程提示如上。  问题排查:1.直接执行的过程事务挂起(排除)2.重启数据库实例(重启后无效)3.过程中套用过程,套用的过程中使用事务,因为插入的表结构字段超出最大长度(修改表结构问题恢复) 结论:事务执行失败,嵌套层级太深。  ​......
  • SQL Server关于AlwaysOn的理解-读写分离的误区(一)
       很多人认为AlwaysOn在同步提交模式下数据是实时同步的,也就是说在主副本写入数据后可以在辅助副本立即查询到。因此期望实现一个彻底的读写分离策略,即所有的写语句在主副本上,所有的只读语句分离到辅助副本上。这是一个认知误区,本文通过原理和测试进行解释。实现原理从下图可......
  • Windows Server 2012 R2 Standard 安装.net 3.5
    很久没截图IIS部署了,最近临时接了一个部署任务就是在一台新的WindowsServer2012 R2 上部署一套系统,需要安装的.net3.5但是一直不成功,找了很久的资料终于有着落了,先记录下正常情况安装大概率都会出现以下问题 然后网上找寻解决方案方法一【无效】:角色添加功能里边(就......
  • The server is temporarily unable to service your request due to maintenance
    访问不了就是这个路径没有通 有几下几点最重要的就是看一下你的路径有没有错主要就是看一下你服务器的端口号是不是变更了或者就是你的ip、第二点就是看一下你的服务器有没有启动这两点是最主要的 ......
  • Asp.net的项目SqlServer数据库迁移到MySql
    1、环境Windows10+VS2015+.Net4.5.2+MySql5.72、准备   1)、NavicatPremium15(用于数据库转换,其它版本的亦可)   2)、Vs2015   3)、安装mysql-connector-net-6.9.9.msi   4)、安装mysql-for-visualstudio-1.2.6.msi3、数据库转换  1)、打开nav......
  • 高版本kube-apiserver删除namespace
    确认namespace下没有资源kubectlgetall-nmy-namespacekubectldeletenamespacemy-namespace调用kube-apiserverPUT接口去掉namespace中的finalizerkubectlproxy&PID=$!curl-H"Content-Type:application/json"-XPUT-d'{"apiVersion":"......
  • Serverless = FaaS + BaaS
    Serverless架构是采用FaaS(函数即服务)和BaaS(后端服务)服务来解决问题的一种设计。到底什么是Serverless?无服务器硬件+虚拟机+操作系统+数据库+中间件/运行库+应用+函数全包,用户只交集在业务代码上,更加减少发布运维的工作laaS-->PaaS-->SaaS-->FaasFaaS就是Functionasaservi......