转-SQL 2005修改系统表
FROM:http://blog.csdn.net/liangCK/archive/2008/10/07/3029315.aspx
在 SQL Server 2000 中修改系統表的方法大部分人都知道,介紹如何在 SQL 2005 中修改系統表的資料目前還比較少,雖然微軟不贊成修改系統表,而且也把修改系統表的代碼隱藏起來了。但微軟一貫喜歡給自己留個小后門。我是這么想的:最先知道如何修改 SQL 2005 系統表的人只有微軟 SQL Server 2005 的設計、開發者。于是就到 msdn 中逛逛,最后終于找到了 SQL 2005 修改系統表的方法:)
SQL 2005 修改系統表的兩個先決條件
1. 在單用戶模式(single-user mode)下啟動 sql server instance(實例)。 2. 使用管理員專用連接(DAC: dedicated administrator connections),連接到 SQL Server Instance下面,就來具體介紹如何實現這兩個修改系統表的先決條件。
1. 單用戶模式下啟動 SQL Server 2005 Instance(實例)。
【開始】--【運行】--【services.msc】進入 Windows 服務管理器。
找到 【SQL Server 服務】--【右鍵】--【屬性】
根據【可執行文件的路徑】內容,我的是:
"D:\Microsoft SQL Server 2005\MSSQL.1\MSSQL\Binn\sqlservr.exe" -sSQLB命令行下,進入 sqlservr.exe 安裝路徑,執行:sqlservr.exe -sSQLB -m
C:\>d: D:\>cd D:\Microsoft SQL Server 2005\MSSQL.1\MSSQL\Binn D:\Microsoft SQL Server 2005\MSSQL.1\MSSQL\Binn> sqlservr.exe -sSQLB -m-sSQLB 表示要啟動的SQL Server 實例名字為:SQLB;-m 參數表示以單用戶模式啟動 SQL Server 實例。如果順利的話,SQL Server 實例就啟動起來了。如果啟動不了呢,可以重新啟動下機器,再試,如果仍然啟動不了,那你可以根據報錯內容,到網上找找解決方法。
2. 使用 DAC 連接到 SQL Server 2005。
使用 DAC 連接到 SQL Server 2005 最常見的方法就是,在命令行下執行帶有 -A 參數的 sqlcmd,如:
c:\sqlcmd -E -S MYPC\SQLB -A也可以使用 SQL Server 超級用戶和密碼進入:
c:\sqlcmd -U sa -P **** -S MYPC\SQLB -A注意:這里是“MYPC\SQLB”(computer_name\instance_name),而不單單只是 SQL Server 實例名“SQLB”。 小知識:“除默認實例外,所有數據庫引擎實例都由安裝該實例的過程中指定的實例名標識。應用程序必須提供準備連接的計算機的名稱和命名實例的實例名。計算機名和實例名以格式 computer_name\ instance_name 指定”。
如果不能通過 DAC 連接到 SQL Server 2005 實例,那你就要檢查下,SQL Server Browser 這個服務啟動沒有。SQL Server Browser 偵聽 1434端口(UDP端口),它可以根據客戶端發送來的實例名,返回相應的IP 和 Port,從而引導客戶端建立正確的連接。
大部分情況下都能順利完成 DAC 連接。但是,在命令行下操作 SQL Server,你不覺得很痛苦嗎,如果沒有配置好 cmd 環境,顯示的結果總是亂七八糟的。呵呵,我在這里介紹下如何使用 SQL Server Management Studio(SSMS)DAC 到 SQL 2005。DAC 連接跟普通連接不一樣,它有個自己專用的端口,我們只要找到這個 DAC 端口,就可以以任何方式(命令行或者 SSMS)連接到 SQL 2005 實例。
如何找到 DAC 的專用端口呢?當你在命令行單用戶下啟動 sql server 的時候, SQL Server 在屏幕上會輸出好多日志信息。關鍵是找到包含“Dedicated admin connection”的內容:
Server is listening on [ 127.0.0.1 [ipv4] 1183]. Dedicated admin connection support was established for listening locally on port 1183.這條信息告訴我們,SQL 2005 在網絡地址 127.0.0.1 上的 1183 端口監聽客戶端的 DAC 連接。我們啟動 SSMS,在服務器名稱中輸入:127.0.0.1,1183。這里的 ip 和 port 中間要用英文逗號“,”來分隔。當然,也可以在命令下通過 sqlcmd 來建立 DAC 連接。
c:\sqlcmd -E -S 127.0.0.1,1183需要注意的是,如果指定了 DAC 端口,就不要在 sqlcmd 后加 -A 參數,否則會出錯。這時候,也不需要啟動 SQL Server Browser 了,因為我們已經告訴 sqlcmd 要連接到的 DAC 地址和端口是:127.0.0.1,1183。
就可以通過 DAC 連接到 SQL 2005 中,這時候會出現個錯誤,忽略它。
3. 在 SQL 2005 中修改系統表
use master gocreate table ddd (id int not null) goinsert into ddd values(10) go這時候,我們創建了一個表:ddd。下面在 SQL 2005 系統表 sys.sysschobjs 中查詢這個表“ddd”的元數據。sys.sysschobjs 就類似于 SQL 2000 中的系統表 dbo.sysobjects。
select * from sys.sysschobjs where name = 'ddd'下面列出的結果集中,由于版面的緣故,我省略了 created, modified 兩個日期字段內容。
id name nsid nsclass status type pid pclass intprop created modified ---------- ----- ---- ------- -------- ---- ---- ------ -------- ------- -------- 1211151360 ddd 1 0 917504 U 0 1 1 2008*** 2008***這時候,我想把表“ddd”更名為“sqlstudy”:
update sys.sysschobjs set name = 'sqlstudy' where name = 'ddd' 警告: 數據庫 ID 1 中的系統表 ID 34 已直接更新,但可能未維護緩存一致性。應重新啟動 SQL Server。 (1 行受影響)因為有緩存導致不一致,新的表名字可能沒有馬上生效,在命令行 Ctrl+C,重新啟動 SQL Server 2005。就可以看到表“ddd”已經改名為“sqlstudy”了。
select * from sqlstudy id ------- 10補充內容:查看 SQL 2005 系統表的語句。
select name from sys.all_objects where type = 'S' order by name name ------------------- sysallocunits sysasymkeys sysbinobjs sysbinsubobjs syscerts syschildinsts sysclsobjs syscolpars sysconvgroup sysdbfiles sysdbreg sysdercv sysdesend sysendpts sysfiles1 sysftinds sysguidrefs syshobtcolumns syshobts sysidxstats sysiscols syslnklgns syslogshippers sysmultiobjrefs sysnsobjs sysobjkeycrypts sysobjvalues sysowners sysprivs sysqnames sysremsvcbinds sysrmtlgns sysrowsetcolumns sysrowsetrefs sysrowsets sysrts sysscalartypes sysschobjs sysserefs syssingleobjrefs syssqlguides systypedsubobjs sysusermsgs syswebmethods sysxlgns sysxmitqueue sysxmlcomponent sysxmlfacet sysxmlplacement sysxprops sysxsrvs在 SQL Server 2005 master 數據庫中,共有 51 個系統表。并且這些系統表的 schema 是 “sys”。
本文《SQL 2005 修改系統表方法》示例,在 SQL Server 2005 Enterprise Edition SP2(9.00.3042.00) 環境下運行通過。操作系統:Windows Server 2003。
本文參考:http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=89594&SiteID=1
轉載于:https://www.cnblogs.com/xioxu/archive/2009/02/20/1394995.html
總結
以上是生活随笔為你收集整理的转-SQL 2005修改系统表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AD排错的一般流程
- 下一篇: 【Unity Shaders】Trans