根据版本的不同整理所有的绿色SQL Server

ZDNet软件频道 时间:2009-12-03 作者: | 赛迪网 我要评论()
本文关键词:Server 服务器 SQL
使用相对路径的好处是可以让你的绿色Sql server随时copy到任意目录或是任意其它机器上启动,并且原来的数据库全部可以使用,如果是绝对路径到了其它机器就不行了。根据上面的6个步骤,你就可以自已搞定一个绿色的Sql Server了.并且你可以根据不同的sql server版本,整理出所有版本的绿色sql server。

  【赛迪网-IT技术报道】在这篇论坛文章(赛迪网技术社区)中,读者可以了解到如何根据不同的SQL Server版本,整理出所有版本的绿色SQL Server的具体方法,详细内容请参考下文:

  1. SQLservr.exe 运行参数

  SQL Server的启动可以为Windows服务方式(默认),也可以以应用程序方式启动。下面介绍SQLservr.exe以应用程序方式启动时的参数问题。

  SQLservr 应用程序用法:

  SQLservr [-sinstance_name] [-c] [-dmaster_path] [-f]

  [-eerror_log_path] [-lmaster_log_path] [-m]

  [-n] [-Ttrace#] [-v] [-x] [-g number] [-O] [-y number]

  -sinstance_name

  指定要连接到的 SQL Server 实例。如果未指定命名实例,SQLservr 将启动 SQL Server 默认实例。重要 启动 SQL Server 实例时,必须从实例所在的适当目录使用 SQLservr 应用程序。对于默认实例,从 MSSQLBinn 目录运行 SQLservr。对于命名实例,在 MSSQL$instance_nameBinn 目录运行 SQLservr。

  -c

  表示以独立于 Windows NT 服务控制管理器的方式启动 SQL Server 实例。当从命令提示符下启动 SQLServer 时,可使用该选项缩短启动 SQL Server 的时间。(注意:当使用该选项时,无法通过使用 SQLServer 服务管理器或 net stop 命令停止 SQL Server,而且如果已从 Microsoft Windows NT? 系统注销,则 SQL Server 将停止运行。)-dmaster_path指出 master 数据库文件的完全合法路径。在 -d 和 master_path 之间没有空格。

  -f

  以最小配置模式启动服务器。然后,系统管理员可对配置选项重新配置(使用 sp_configure 系统存储过程)。

  -eerror_log_path

  表示错误日志文件的完全合法路径。如果未指定路径,则默认实例的默认位置是 x:Program FilesMicrosoft SQL ServerMSSQLLogErrorlog,命名实例的默认位置是 x:Program FilesMicrosoft SQL ServerMSSQL$instance_nameLogErrorlog。在 -e 和 error_log_path 之间没有空格。

  -lmaster_log_path

  指示 master 数据库事务日志文件的完全合法路径。在 -l 和 master_log_path 之间没有空格。

  -m

  表示在单用户模式下启动 SQL Server 实例。如果 SQL Server 是以单用户模式启动的,则只能连接一个用户。CHECKPOINT 机制(它确保完成的事务定期从磁盘高速缓存写入数据库设备中)将不启动。(一般情况下,如果您遇到需要修复的系统数据库问题时,可使用此选项。)

  -n

  表示您不想使用 Windows NT 应用程序日志来记录 SQL Server 事件。如果用 -n 选项启动 SQL Server 实例,则最好也使用 -e 选项,否则将不会记录 SQL Server 事件。

  -Ttrace#

  表示应使用指定的有效跟踪标记 (trace#) 来启动 SQL Server 实例。跟踪标志用来启动具有非标准行为的服务器。有关可用跟踪标记 (trace#) 的更多信息,请参见跟踪标记。重要 当指定跟踪标志时,请使用 –T 来传递跟踪标志号。SQL Server 接受小写字母 t (-t);然而,-t 还设置 SQL Server 支持工程师所需的其它内部跟踪标记。

  -v

  显示服务器的版本号。

  -x

  禁用维护 CPU 统计。

  -g memory_to_reserve

  指定内存的兆字节整数,该内存被保留下来用于 SQL Server 2000 内部(进程内)运行的其它应用程序。

  -O

  指定不需要分布式 COM (DCOM),从而禁用异类查询。

  -y error_number

  如果 SQL Server 2000 遇到在该选项中指定的错误信息,它将把表象堆栈跟踪写入错误日志。可以使用多个 –y 参数指定多个错误。

  2. 系统数据库路径问题

  一般情况下,正常安装SQL Server之后,master等系统数据库的路径都是被设置为绝对路径,如果要改正数据库的路径为相对路径,可以使用以下SQL语句:

  SQL:=format(' update sysaltfiles set filename='%s' where filename='%s' ',

  ['...data'+extractfilename(MDFFile),MDFFile]);

  ADOQuery1.Close;

  ADOQuery1.SQL.Text:=SQL;

  ADOQuery1.ExecSQL;

  SQL:=format(' update sysaltfiles set filename='%s' where filename='%s' ',

  ['...data'+extractfilename(LogFile),LogFile]);

  ADOQuery1.Close;

  ADOQuery1.SQL.Text:=SQL;

  ADOQuery1.ExecSQL;

  SQL:=Format('update sysdatabases set filename='%s' where name='%s'', ['...data'+extractfilename(MDFFile),Edit1.text]);

  ADOQuery1.Close;

  ADOQuery1.SQL.Text:=SQL;

  ADOQuery1.ExecSQL;

  大家打开sysaltfiles 表和sysdatabases 一看就知道了,不多说了。除了系统数据库,其它的数据库也可以使用这种方法修改为相对路径。

  使用相对路径的好处是可以让你的绿色SQL Server随时copy到任意目录或是任意其它机器上启动,并且原来的数据库全部可以使用,如果是绝对路径到了其它机器就不行了。

  3. 注册表问题:

  大家可以看下面的注册表文件

  Windows Registry Editor Version 5.00

  [HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL Server$name]

  [HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL Server$nameMSSQLServer]

  "AuditLevel"=dword:00000000

  "DefaultLogin"="guest"

  "ListenOn"=hex(7):53,00,53,00,4d,00,53,00,53,00,48,00,37,00,30,00,00,00,53,00, 53,00,4e,00,45,00,54,00,4c,00,49,00,42,00,00,00,00,00

  "LoginMode"=dword:00000000

  "Map_"="\"

  "Map#"="-"

  "Map$"=""

  "SetHostName"=dword:00000000

  "Tapeloadwaittime"=dword:ffffffff

  "uptime_pid"=dword:00001044

  "uptime_time_utc"=hex:26,57,c8,b3,fb,bb,c5,01

  [HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL Server$nameMSSQLServerCurrentVersion]

  "CurrentVersion"="8.00.194"

  "RegisteredOwner"=""

  "SerialNumber"=""

  "CSDVersionNumber"=dword:00000300

  "CSDVersion"="8.00.761"

  "Language"=dword:00000804

  "checksum"=hex:37,35,32,32,63,31,35,38,61,65,37,64,34,63,64,37,35,30,64,61,30, 33,34,62,37,64,63,32,30,61,36,36,39,37,62,34,61,35,65,36,63,66,62,61,38,37, 39,36,37,31,66,33,39,61,36,65,35,64,30,33,37,36,37,65,64,36,33,30,61,39,63, 36,66,37,36,30,35,65,32,66,34,66,31,33,63,39,33,63,34,66,62,66,34,66,64,38, 64,65,36,64,35,34,37,33,35,39,35,32,36,63,61,32,36,63,33,32,64,34,36,33,65, 36,39,34,30,65,61,37,64,35,30,61,66,34,64,32,66,38,37,36,30,61,39,64,30,61, 32,36,64,65,66,66,00

  [HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL Server$nameMSSQLServerParameters]

  [HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL Server$nameMSSQLServerSuperSocketNetLib]

  "ProtocolList"=hex(7):74,00,63,00,70,00,00,00,6e,00,70,00,00,00,00,00

  [HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL Server$nameMSSQLServerSuperSocketNetLibNp]

  "PipeName"="\\.\pipe\MSSQL$$name\SQL\query"

  [HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL Server$nameMSSQLServerSuperSocketNetLibTcp]

  "TcpHideFlag"=dword:00000000

  "TcpDynamicPorts"="$port"

  "TcpPort"="$port"

  [HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL Server$nameSetup]

  "FeatureName"="SQLRun"

  "FirstStart"=dword:00000000

  "ProductCode"=""

  "SQLDataRoot"="$path"

  "SQLPath"="$path"

  这是注册一个SQL Server实例所要使用的注册表,把里面的$name,$path,$port替换成你定义的实例名,当前程序所有路径,监听端口,然后导入注册表就可以了。

  4. 启动SQL Server

  iPath:=ExtractFilePath(Application.ExeName);

  CommandLine:=PChar(iPath+'binnSQLservr.exe -d...datamaster.mdf -l...datamastlog.ldf -e...Loglog.txt+Edit1.Text);

  CreateProcess(

  nil,

  CommandLine,

  nil,

  nil,

  true,

  CREATE_NO_WINDOW,

  nil,

  PChar(iPath+'binn'),

  StartupInfo,

  ProcessInformation

  )

  也可以直接写个.bat运行就ok了.

  5.启动日志问题

  这个问题最简单,因为在执行SQLservr.exe时指定的有log文件,你只用用个定时器(50ms)读文件,就可以在程序中显示出来启动日志了,呵呵,这只是个思想,具体的自已想办法吧.

  6. 停止服务

  用CreateProcess可以得到进程ID,TerminateProcess就关了SQL Server进程,服务就停了,简单吧。

  根据上面的6个步骤,你就可以自已搞定一个绿色的SQL Server了.并且你可以根据不同的SQL Server版本,整理出所有版本的绿色SQL Server

  绿色 SQL Server 企业版

  绿色 SQL Server 个人版

  绿色 MSDE

  ... ...

  这样以后遇到什么操作系统都全部搞定。

  最后说一句,只要你能把几个SQL Server版本的数据整理好(主要是系统数据库的路径问题(好像现在盒子已经有绿色企业版的文件了),DLL全部copy就OK了),都可以使用我的管理工具进行管理,呵呵,当然你也可以作出自已的管理器。(责任编辑:卢兆林)

Server

服务器

SQL


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134