加入收藏  免费注册  用户登陆  帮助中心
首页 公司新闻 恒佳商城 网站建设 软件下载 用户中心 技术文栏 在线交流 在线商城 精彩视频 推荐站点 精彩贴图
今天是:2020年12月02日 星期三 您现在位于: 首页技术文栏编程开发相关
   绿色SqlServer原理
作者:  出处:  更新时间: 2008年11月28日 
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 应用程序。对于默认实例,从 \MSSQL\Binn 目录运行 sqlservr。对于命名实例,在 \MSSQL$instance_name\Binn 目录运行 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 Files\Microsoft SQL Server\MSSQL\Log\Errorlog,命名实例的默认位置是 x:\Program Files\Microsoft SQL Server\MSSQL$instance_name\Log\Errorlog。在 -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_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\$name] 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\$name\MSSQLServer] 
"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_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\$name\MSSQLServer\CurrentVersion] 
"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_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\$name\MSSQLServer\Parameters] 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\$name\MSSQLServer\SuperSocketNetLib] 
"ProtocolList"=hex(7):74,00,63,00,70,00,00,00,6e,00,70,00,00,00,00,00 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\$name\MSSQLServer\SuperSocketNetLib\Np] 
"PipeName"="\\\\.\\pipe\\MSSQL$$name\\sql\\query" 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\$name\MSSQLServer\SuperSocketNetLib\Tcp] 
"TcpHideFlag"=dword:00000000 
"TcpDynamicPorts"="$port" 
"TcpPort"="$port" 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\$name\Setup] 
"FeatureName"="SqlRun" 
"FirstStart"=dword:00000000 
"ProductCode"="{E09B48B5-E141-427A-AB0C-D3605127224A}" 
"SQLDataRoot"="$path" 
"SQLPath"="$path" 

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

4. 启动Sql Server 

iPath:=ExtractFilePath(Application.ExeName); 
CommandLine:=PChar(iPath+'binn\sqlservr.exe -d.\..\data\master.mdf -l.\..\data\mastlog.ldf -e.\..\Log\log.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。 这样以后遇到什么操作系统都全部搞定。 
 (本文已被浏览 8566 次)
 发布人:james
 → 推荐给我的好友
上篇文章:【编程经典】自动根据CXGRID排序结果打印数据...
下篇文章:[推荐]XP SP3中在桌面显示IE图标的方法
   文章分类
   文章评论
  → 评论内容 (点击查看)   共0条评论,每页显示5条评论   浏览所有评论
(没有相关评论)
  → 发表我的评论
您的姓名: 您的Email:
评论内容:
250字内
发表评论:      发表评论须知 →
  • 请遵守中华人民共和国各项有关法律,严禁发表违法、反动、以及迷信信息;
  • 不要发布垃圾广告信息!您所发表的信息必须经过我们审核才能显示,所以不要做无用的操作^_^
  • 关于我们网站留言友情链接与我在线管理TOP
    
页面执行时间:<font class=red>46.875</font> 毫秒<font class=gray>(8次)</font><br>
本站当前有 <font class=red>1</font> 人同时在线<br>
最高峰有 <font class=red title=>540</font> 人同时在线<br>
最高峰发生在:2020-3-9 1:48:21<br>
本站总访问量:<font class=red>2234398</font> 人次<br>
本站统计时间:从 <font class=red>2007-01-01</font> 至今<br>
<font class=gray>网站当前版本:CMS1.2</font>
    临沂曙光软件 http://www.softsky.cn/
    联系我们:softsky@163.com
    Copyright (c) 2005-2016 曙光软件 版权所有 鲁ICP备05030889号
    地址:山东临沂华强科技城4楼 电话:0539-2025968 18953979168