天天看點

SqlServer啟動參數配置 - gds通用軟體開發系統

SqlServer啟動參數配置

1.Sqlservr.exe運作參數。

SqlServer的啟動可以為Windows服務方式(預設),也可以以應用程式方式啟動。下面介紹sqlservr.exe以應用程式方式啟動時的參數問題。

sqlservr應用程式用法:

sqlservr[-sinstance_name][-c][-dmaster_path][-f]

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

[-n][-Ttrace#][-v][-x][-gnumber][-O][-ynumber]

-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内部(程序内)運作的其它應用程式。

不配置的話,OPENROWSET經常死掉,而且重新開機後才能恢複

-O

指定不需要分布式COM(DCOM),進而禁用異類查詢。

-yerror_number

如果SQLServer2000遇到在該選項中指定的錯誤資訊,它将把表象堆棧跟蹤寫入錯誤日志。可以使用多個–y參數指定多個錯誤。

2.系統資料庫路徑問題.

一般情況下,正常安裝sqlserver之後,master等系統資料庫的路徑都是被設定為絕對路徑,如果要改正資料庫的路徑為相對路徑,可以使用以下SQl語句:

sql:=format(\'updatesysaltfilessetfilename=\'%s\'wherefilename=\'%s\'\',

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

ADOQuery1.Close;

ADOQuery1.SQL.Text:=sql;

ADOQuery1.ExecSQL;

sql:=format(\'updatesysaltfilessetfilename=\'%s\'wherefilename=\'%s\'\',

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

ADOQuery1.Close;

ADOQuery1.SQL.Text:=sql;

ADOQuery1.ExecSQL;

sql:=Format(\'updatesysdatabasessetfilename=\'%s\'wherename=\'%s\'\',[\'.\..\data\\'+extractfilename(MDFFile),Edit1.text]);

ADOQuery1.Close;

ADOQuery1.SQL.Text:=sql;

ADOQuery1.ExecSQL;

大家打開sysaltfiles表和sysdatabases一看就知道了,不多說了。除了系統資料庫,其它的資料庫也可以使用這種方法修改為相對路徑。

使用相對路徑的好處是可以讓你的綠色Sqlserver随時copy到任意目錄或是任意其它機器上啟動,并且原來的資料庫全部可以使用,如果是絕對路徑到了其它機器就不行了。

3.系統資料庫問題:

大家可以看下面的系統資料庫檔案

WindowsRegistryEditorVersion5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MicrosoftSQLServer\$name]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MicrosoftSQLServer\$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\MicrosoftSQLServer\$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\MicrosoftSQLServer\$name\MSSQLServer\Parameters]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MicrosoftSQLServer\$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\MicrosoftSQLServer\$name\MSSQLServer\SuperSocketNetLib\Np]

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

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MicrosoftSQLServer\$name\MSSQLServer\SuperSocketNetLib\Tcp]

"TcpHideFlag"=dword:00000000

"TcpDynamicPorts"="$port"

"TcpPort"="$port"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MicrosoftSQLServer\$name\Setup]

"FeatureName"="SqlRun"

"FirstStart"=dword:00000000

"ProductCode"="{E09B48B5-E141-427A-AB0C-D3605127224A}"

"SQLDataRoot"="$path"

"SQLPath"="$path"

這是注冊一個SqlServer執行個體所要使用的系統資料庫,把裡面的$name,$path,$port替換成你定義的執行個體名,目前程式所有路徑,監聽端口,然後導入系統資料庫就可以了。

4.啟動SqlServer

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就關了sqlserver程序,服務就停了,簡單吧。

根據上面的6個步驟,你就可以自已搞定一個綠色的SqlServer了.并且你可以根據不同的sqlserver版本,整理出所有版本的綠色sqlserver。

綠色sqlserver企業版

綠色sqlserver個人版

綠色MSDE

......

這樣以後遇到什麼作業系統都全部搞定。

最後說一句,隻要你能把幾個Sqlserver版本的資料整理好(主要是系統資料庫的路徑問題(好像現在盒子已經有綠色企業版的檔案了),DLL全部copy就OK了),都可以使用我的管理工具進行管理,呵呵,當然你也可以作出自已的管理器。

我的管理器,主要是為了我自已用,大家如果用着可以,請多提意見。由于sqlserver資料太大,并且盒子上已經有了,這次隻上傳了exe和目錄結構。

不知道說的是否正确,如果還有什麼問題,我們一起交流.Email:[email protected]

posted on 2006-04-05 10:36 人淡如菊 閱讀(13) 評論(1) 編輯收藏 收藏至365Key 

評論 

#re: SQL 綠色版 

人淡如菊

Posted @ 2006-04-05 10:55

sqlserver2000安裝不成功之處理 

SQLServer2000安裝

sqlserver2000安裝不成功之處理

1、先停止服務,退出,再到控制台正常解除安裝;

2、删除安裝路徑下的所有目錄檔案夾,包括系統資料庫,如果擔心删除不到位,可以用查找指令,将所有*SQL*的逐一查出,然後再一一确認删除;(如果安裝SQL時,不是按預設路徑安裝,除了删除安裝路徑下的所有目錄檔案夾外,主系統盤裡的程式組裡的相應檔案夾也要删除)

3、删除的時候還應考慮到C:\Program Files\Common Files\Microsoft Shared\web server extensions\40\bin\FPMMC.MSC;

4、管理工具中,将SQLSERVERAGENT服務停止服務;此服務程式存放在D:\Program Files\Microsoft SQL Server\MSSQL\Binn\sqlagent.exe -i MSSQLSERVER

5、将C:\WINDOWS目錄下的sql.mif、sqlsp.log、sqlstp.log、sqlsrv32.rll、 sqlwid.dll、sqlwoa.dll、dbmsqlgc.dll、SQLSRV32.dll、sqlclnt.rsp、 sqlunirl.dll、SQLSERVR.EXE-18F260D8.pf、SQLMANGR.EXE-0150BA62.pf等清除;(偶機器 SQL是打過SP4的)

6、删除時還應将C:\Program Files\Common Files\Microsoft Shared\SQL Debugging\sqldbreg2.exe,sqldbreg.exe 

,sqldbg.dll也清除掉;

7、如果安裝不成功,記得要将C:\WINDOWS\Temp\SQLSETUP\BIN\SCM.EXE一并清除;

8、解除安裝幹淨後,如果怕再次安裝出錯,那就建議按預設路徑安裝;

9、SQL在安裝過程中如果出錯,系統會鎖定檔案,當然,解除安裝程式也會,但可以通過修改系統資料庫,就不用重新啟動,再嘗試安裝了。(建議裝完SQL後還是重新啟動一下機器,就避免修改系統資料庫了) 

避免重新開機,系統資料庫修改:(1)運作REGEDIT;(2)系統資料庫中選擇HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Control\Session Manager,将光标定位于此;(3)選擇檔案->導出,再次儲存(安全起見);(4)在右邊窗中右擊PendingFile Rename Operations,選擇删除,最後确認;

10、如果安裝不成功,還可以通過C:\WINDOWS\sqlstp.log檢視安裝不成功的原因,這個是最利于解決問題的了;

11、同時需要将C:\Documents and Settings\XXX\Local Settings\Temp\所有關于*SQL*.*全部清除;例如将sqlsp.out,SQLSERVR.DBD, sqlmangr.exe.mdmp,sqlmangr.exe.hdmp清除即可。

SqlServer啟動參數配置 - gds通用軟體開發系統