SqlServer启动参数
1.Sqlservr.exe运行参数。 SqlServer的启动可以为Windows服务方式(默认),也可以以应用程序方式启动。下面介绍sqlservr.exe以应用程序方式启动时的参数问题。 sqlservr应用程序用法: sqlservr[-sinstance_name][-c][-dmaster_path][-f] -sinstance_name 指定要连接到的SQLServer实例。如果未指定命名实例,sqlservr将启动SQLServer默认实例。重要启动SQLServer实例时,必须从实例所在的适当目录使用sqlservr应用程序。对于默认实例,从/MSSQL/Binn目录运行sqlservr。对于命名实例,在/MSSQL$instance_name/Binn目录运行sqlservr。 -c 表示以独立于WindowsNT服务控制管理器的方式启动SQLServer实例。当从命令提示符下启动SQLServer时,可使用该选项缩短启动SQLServer的时间。(注意:当使用该选项时,无法通过使用SQLServer服务管理器或netstop命令停止SQLServer,而且如果已从MicrosoftWindowsNT?系统注销,则SQLServer将停止运行。)-dmaster_path指出master数据库文件的完全合法路径。在-d和master_path之间没有空格。 -f 以最小配置模式启动服务器。然后,系统管理员可对配置选项重新配置(使用sp_configure系统存储过程)。 -eerror_log_path 表示错误日志文件的完全合法路径。如果未指定路径,则默认实例的默认位置是x:/ProgramFiles/MicrosoftSQLServer/MSSQL/Log/Errorlog,命名实例的默认位置是x:/ProgramFiles/MicrosoftSQLServer/MSSQL$instance_name/Log/Errorlog。在-e和error_log_path之间没有空格。 -lmaster_log_path 指示master数据库事务日志文件的完全合法路径。在-l和master_log_path之间没有空格。 -m 表示在单用户模式下启动SQLServer实例。如果SQLServer是以单用户模式启动的,则只能连接一个用户。CHECKPOINT机制(它确保完成的事务定期从磁盘高速缓存写入数据库设备中)将不启动。(一般情况下,如果您遇到需要修复的系统数据库问题时,可使用此选项。) -n 表示您不想使用WindowsNT应用程序日志来记录SQLServer事件。如果用-n选项启动SQLServer实例,则最好也使用-e选项,否则将不会记录SQLServer事件。 -Ttrace# 表示应使用指定的有效跟踪标记(trace#)来启动SQLServer实例。跟踪标志用来启动具有非标准行为的服务器。有关可用跟踪标记(trace#)的更多信息,请参见跟踪标记。重要当指定跟踪标志时,请使用–T来传递跟踪标志号。SQLServer接受小写字母t(-t);然而,-t还设置SQLServer支持工程师所需的其它内部跟踪标记。 -v 显示服务器的版本号。 -x 禁用维护CPU统计。 -gmemory_to_reserve 指定内存的兆字节整数,该内存被保留下来用于SQLServer2000内部(进程内)运行的其它应用程序。 -O 指定不需要分布式COM(DCOM),从而禁用异类查询。 -yerror_number 如果SQLServer2000遇到在该选项中指定的错误信息,它将把表象堆栈跟踪写入错误日志。可以使用多个–y参数指定多个错误。
一般情况下,正常安装sqlserver之后,master等系统数据库的路径都是被设置为绝对路径,如果要改正数据库的路径为相对路径,可以使用以下SQl语句: sql:=format('updatesysaltfilessetfilename='%s'wherefilename='%s'', ADOQuery1.Close; sql:=format('updatesysaltfilessetfilename='%s'wherefilename='%s'', ADOQuery1.Close; sql:=Format('updatesysdatabasessetfilename='%s'wherename='%s'',['./../data/'+extractfilename(MDFFile),Edit1.text]); ADOQuery1.Close; 大家打开sysaltfiles表和sysdatabases一看就知道了,不多说了。除了系统数据库,其它的数据库也可以使用这种方法修改为相对路径。 使用相对路径的好处是可以让你的绿色Sqlserver随时copy到任意目录或是任意其它机器上启动,并且原来的数据库全部可以使用,如果是绝对路径到了其它机器就不行了。 3.注册表问题: 大家可以看下面的注册表文件 WindowsRegistryEditorVersion5.00 [HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MicrosoftSQLServer/$name] [HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MicrosoftSQLServer/$name/MSSQLServer] [HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MicrosoftSQLServer/$name/MSSQLServer/CurrentVersion] [HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MicrosoftSQLServer/$name/MSSQLServer/Parameters] [HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MicrosoftSQLServer/$name/MSSQLServer/SuperSocketNetLib] [HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MicrosoftSQLServer/$name/MSSQLServer/SuperSocketNetLib/Np] [HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MicrosoftSQLServer/$name/MSSQLServer/SuperSocketNetLib/Tcp] [HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MicrosoftSQLServer/$name/Setup] 这是注册一个SqlServer实例所要使用的注册表,把里面的$name,$path,$port替换成你定义的实例名,当前程序所有路径,监听端口,然后导入注册表就可以了。 4.启动SqlServer iPath:=ExtractFilePath(Application.ExeName); 也可以直接写个.bat运行就ok了. 5.启动日志问题。 这个问题最简单,因为在执行sqlservr.exe时指定的有log文件,你只用用个定时器(50ms)读文件,就可以在程序中显示出来启动日志了,呵呵,这只是个思想,具体的自已想办法吧. 6.停止服务 用CreateProcess可以得到进程ID,TerminateProcess就关了sqlserver进程,服务就停了,简单吧。 |
出自:http://hi.baidu.com/zbzb/blog/item/2641ca116b7a5310b8127bb5.html