目前日期文章:201003 (13)

瀏覽方式: 標題列表 簡短摘要

大概沒有人記得所有DB(SQL/Oracle/DB2/...)的connection string 吧? 這個網站只能說佛心來著, 不用再到處去找sample code, 看這裡就對了!

http://www.connectionstrings.com/

 

cbw0731 發表在 痞客邦 PIXNET 留言(0) 人氣()

http://www.ncis.com.tw/ncis_bbs/redirect.php?tid=893&goto=lastpost

Option Explicit

Private Sub Command1_Click()
  Dim obj As Object
  Dim items As Object
  Dim item As Object

  Set obj = GetObject( _
            "winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

  Set items = obj.ExecQuery("Select * from Win32_SerialPort")

  For Each item In items
     Print "COMPORT: " & item.DeviceID
  Next
End Sub

cbw0731 發表在 痞客邦 PIXNET 留言(0) 人氣()

假設我們有一個文字檔, 要寫入 table: StList 中, 且 StList schema 如下:

CREATE TABLE StList
(
 StFName varchar(50) NOT NULL,
 StLName varchar(50) NOT NULL,
 StEmail varchar(100) NOT NULL
)
go

 

文字檔型態一:

Kelly,Reynold,kelly@reynold.com
John,Smith,bill@smith.com
Sara,Parker,sara@parker.com

這個例子較簡單, 因此我們直接用下述語法:

BULK INSERT StList FROM 'c:\TxtFile2.txt' WITH (FIELDTERMINATOR = ',')

 

文字檔型態二:

"Kelly","Reynold","kelly@reynold.com"
"John","Smith","bill@smith.com"
"Sara","Parker","Parker"

這個例子就比較麻煩了, 若直接用以下語法,

BULK INSERT StList FROM 'c:\TxtFile2.txt' WITH (FIELDTERMINATOR = '","')

因為每個欄位的資料前後都有 double quote, 若直接用 "," 分開, 將造成"最前面"和"最後面"的double quote 拿不掉, 也就是會變成:

"Kelly Reynold kelly@reynold.com"
"John Smith bill@smith.com"
"Sara Parker Parker"

可改用以下程式處理:

BULK INSERT StList FROM 'c:\TxtFile2.txt' WITH (FIELDTERMINATOR = '","')

UPDATE StList SET StFName = SUBSTRING(StFName,2,DATALENGTH(StFName)-1)    -- "KellyKelly

UPDATE StList SET StEmail = SUBSTRING(StFName,1,DATALENGTH(StEmail )-1)    -- kelly@reynold.com"kelly@reynold.com

 

 

cbw0731 發表在 痞客邦 PIXNET 留言(0) 人氣()

T-SQL 裡的 Error Handle 比較少人提到, 其實在撰寫 stored procedure 可以幫助除錯, 也可以自訂回饋給前端的訊息.

基本語法:

BEGIN TRY

    :

END TRY

BEGIN CATCH

    :

END CATCH

.TRY 及 CATCH 區塊必須搭配使用。

.TRY 及 CATCH 區塊間不可有其他的 T-SQL

.在 TRY 區塊間的 T-SQL,若發生錯誤,則會跳至 CATCH 區塊執行,然後中斷;若沒有錯誤,則會跳過 CATCH 區塊,然後繼續其後的敍述。

 

錯誤處理, 可用函數:

int ERROR_LINE();    --傳回發生錯誤的行數

BEGIN CATCH

PRINT N'Error Line: ' + CAST(ERROR_LINE() AS nvarchar(100));

END CATCH

 

int ERROR_NUMBER();    --傳回系統錯誤代號

(早期的 MS SQL 版本,可用 @@ERROR)

BEGIN CATCH

IF ERROR_NUMBER() = 220   

PRINT N'The number is too large to carry';  

END CATCH

 

nvarchar ERROR_MESSAGE();    --傳回系統錯誤訊息

 

int ERROR_SEVERITY();

ps: 這並非 Error 的嚴重程度, 只是標明 Error 的分類而已.

 

最後, 擷取自 MSDN 上的範例:

USE AdventureWorks;
GO

BEGIN TRY
    -- Generate a divide-by-zero error.
    SELECT 1/0;
END TRY
BEGIN CATCH
    SELECT
        ERROR_NUMBER() AS ErrorNumber,
        ERROR_SEVERITY() AS ErrorSeverity,
        ERROR_STATE() AS ErrorState,
        ERROR_PROCEDURE() AS ErrorProcedure,
        ERROR_LINE() AS ErrorLine,
        ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
GO


參考資料:

http://www.functionx.com/sqlserver/Lesson09.htm

ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHT/tsqlref9/html/50228f2f-6949-4d2e-8e43-fad11bf973ab.htm

cbw0731 發表在 痞客邦 PIXNET 留言(0) 人氣()

網友來信問到:

我有ㄧ個疑問就是自己的伺服器可以架成兩個不同的網址嗎?我朋友想跟我一起共用伺服器這樣架起來比較省錢!!

回覆:

您好,

不同網域(網址)要共用一台主機,請您務必先了解以下三者的意義及使用時機:
-- 附加網域名稱(add-on domain)
-- 子網域名稱 (Sub domain)
-- 網域寄放 (Parked domain)

可參考下面文章
http://allen888.pixnet.net/blog/post/28573528
http://cocohosting.org/webhosting-question-and-answer-spec-102.html

再看看這個網址;表格中有這三種服務的限制:
http://hosting.why3s.com.tw/uslinuxserver_topd.html

您要和朋友一起省錢架站,如果是要兩個完全不同的網址(www.abc.idv.tw & www.def.idv.tw),那屬於AddOn Domain 的應用;如果要掛在同一個網域(abc.xxx.idv.tw & def.xxx.idv.tw)下,則屬於Sub Domain 的需求。

至於Parked domain,您目前應該用不到。

您可以先調查各家主機業者提供的服務,是否可以滿足您的需求?

cbw0731 發表在 痞客邦 PIXNET 留言(0) 人氣()

至 [網站內容/HTTP標題/MIME類型] 中新增/編輯即可。

 

至於各副檔名對應的MIME,可至下列網址查詢。

 

http://iphone-pc.net/file_extension_category/file-extensions-a/

 

cbw0731 發表在 痞客邦 PIXNET 留言(0) 人氣()

知識家回答備份

http://tw.knowledge.yahoo.com/question/question?qid=1510022603823

 

Q:

 

例如:
c:\01\01\01,c:\01\02\02
要copy到d:\aaa

我如果下xcopy c:\*.* d:\aaa /s
會連目錄結構一起過去,是否有辦法只copy所有檔案而不建立目錄

A:

xcopy 應該作不到你要的效果.

下面這種作法可用, 我試過了.
md d:\aaa
for /r C:\ %f in (*) do @copy "%f" d:\aaa

cbw0731 發表在 痞客邦 PIXNET 留言(0) 人氣()

知識+回答備份。

http://tw.knowledge.yahoo.com/question/question?qid=1010030502403

 

Q:

我想請問一下
如何寫一個在user權限底下可以執行需administrator權限的批次檔?
例如:我現在有一個寫好的批次檔內容是停用網路卡 但在user權限底下是無法停用網路卡的,有甚麼辦法可以讓他即使在user權限 也可以停用網路卡的方法嗎?
以下是我的寫法:
@echo on
cd\
DevCon disable PCI\VEN_11AB

另外假如用runas的方法
但這樣的寫法 會卡在需要keyin密碼 我想把密碼一起寫進去 使用者只需點擊兩下即可 但是不知道寫法 有沒有哪位高手可以解惑~~

或者有其他辦法可以在user權限底下停用網路卡的方法也行 可是千萬別要安裝東西或改機碼 盡量是能夠寫成一隻程式讓使用者點及兩下就完成的方法
感謝各位~~
 
 
A:
您好,以下方法請試試:

(1)寫一個script file , eg: StopNIC.vbs, script 如下:

set WshShell = CreateObject("WScript.Shell")
WshShell.Run "runas /user:AdminAccount ""d:\StopNIC.bat"""
WScript.Sleep 100
WshShell.Sendkeys "password~"

上例中,假設您的批次檔是d:\StopNIC.bat,俱有administrator 權限的帳號是AdminAccount,而"password~"是該帳號的密碼,"~"表示carriage return。

(2)為了怕使用者直接開啓該.vbs偷窺密碼,可以至微軟官網下載 script encoder 將其加密為.vbe
http://www.microsoft.com/downloads/details.aspx?FamilyId=E7877F67-C447-4873-B1B0-21F0626A6329&displaylang=en

(3)拉一個捷徑讓使用者使用該.vbe

上述解決方法參考網址:
http://searchwinit.techtarget.com/tip/0,289483,sid1_gci929880,00.html

cbw0731 發表在 痞客邦 PIXNET 留言(0) 人氣()

知識+回答備份

Q:

我的xp 不是正版的........


但是網丙需要做功課 所以要安裝


但是安裝到一半 他會說要光碟....


怎麼辦呢?!

請給我簡單的說明 怎麼安裝 不要太複雜= ="!
 
A:
 
您好,

根據微軟網站的說法,IIS是內含在作業系統(XP)裡的,並沒有獨立的安裝程式;也就是說,您一定要有XP的光碟片(或.ISO)。

別氣餒!我幫你找了另外一條小路,您可以試試!

方法如下:

(1)下載 Windows XP SP2:
http://www.microsoft.com/downloads/details.aspx?familyid=049C9DBE-3B8E-4F30-8245-9E368D3CDB5A&displaylang=zh-tw

(2)下載後,不是要"安裝",而是將它"解壓縮"到某目錄(.EXE的副檔名,也可以解壓縮,好玩吧?)

(3)解壓縮後的目錄,裡面有個"I386"的資料夾,內含IIS安裝時所需的檔案,因此接下來,請至控制台,按一般程序安裝IIS,等系統要求光碟片時,將路徑指到上面的目錄\I386 裡,應該就可以了。

Good luck!
 
參考資料 http://ezinearticles.com/?How-to-Install-IIS-on-Windows-XP-SP2-Without-the-CD&id=416853

cbw0731 發表在 痞客邦 PIXNET 留言(3) 人氣()

奇摩知識+回覆備份

http://tw.knowledge.yahoo.com/question/question?qid=1510030605719

 

Q:

我用ASP程式寫了一支線上發信的程式
我想擴充其功能
想做到定時發信的功能
目前的程式只能寫完信後
按發信
就傳出去了
我想讓它可以設定某年某月某日某時發送
或設定週期發送
如何銀行的定期轉帳功能
設計這種功能
ASP可以做的到嗎
還是要用啥語言開發呢

 

A:

您好;

姑且不論您用ASP作這樣的功能(定時發信)合不合理(我本人也建議用windows form 或console mode application 作比較好),單就技術上而言,是可行的。簡述方法如下:

假設您的ASP,檔名是 SendMail.ASP。

(1)將檔名更改為 SendMail.VBS (即將.ASP改為.VBS)

(2)程式中不可呼叫 ASP Object;例如:
-->如果有用到 "Server.CreateObject"的程式碼,請改為"CreateObject"
-->"Request"/"Response"等,都不可使用,請移除/修改程式碼。

(3)所有的程式,"必須全都是" ASP code, 也就是說,不可含有HTML Code 或 Javascript/VBScript

(4)移除所有 "" 記號。

完成後的程式,範例如下:
[SendMail.VBS]
==============================================
Dim objCDO

Set objCDO = CreateObject("CDO.Message")
With objCDO
.To = "您的(email address)"
.From = "您的(email address)"
.Subject = "Scheduling Test"
.TextBody = "Scheduling Test Body"

.Send
End With

Set objCDO = Nothing
==============================================

(5)執行(滑鼠雙擊)SendMail.VBS,測試是否如預期寄出信件。

(6)最後,以控制台的排程工具,依照您期望的時間,將VBS 排程。
(執行的程式,直接指向該VBS即可)

以上是基本的作法;如想獲得更多知識,您可以參考下面兩篇文章:

[Getting Scripts to Run on a Schedule]
http://www.asp101.com/articles/john/schedule/default.asp

[How do I schedule ASP files?]
http://classicasp.aspfaq.com/general/how-do-i-schedule-asp-files.html

cbw0731 發表在 痞客邦 PIXNET 留言(1) 人氣()

 

原文: Linked Server performance tips

 

重點摘要:

透過linked server 所執行的遠端存取/交易,可能耗用大量的頻寬,所以在使用上,要注意能避免的overhead 要盡量避免。

  

當查詢裡包括遠端主機的資料時,用linked server 將比使用 OPENROWSET OPENDATASOURCE 來得有效率。

  

當需要遠端主機回傳資料時,盡量讓資料先在遠端過濾完畢後再回傳;亦即,只取回必要的資料就好,以避免額外的網路傳輸。OPENQUERY 可作到這樣的效果。

 

當遠端 DB 與近端 DB character set sort order (collation) 相同時,可將 SP_SERVEROPTION "collation compatible"選項打開,可增加效能;尤其當使用 WHERE 時,若選項不開啓,則 MS SQL 必須將遠端所有資料傳輸至近端後才能比對;若開啓,則可在遠端比對。

 

遠端主機最好與近端主機接同一台 switch,或至少在同一個 subnet 裡。

 

當以 Enterprise Manager Management Studio 建立一個 linked server 時,在 Server Option tab 裡,可以考慮設定 Connection Timeout 以及 Query Timeout 的值;預設值 0 表示不會 time out,設定該值可以幫助我們找出效能不彰的 Query

 

 

 

在預設的情形下, MS SQL 會將查詢盡量放在遠端,並只取回必要的資料, 但在下述情形下, MS SQL 可能必須先將所有資料取回:

  • Data conversion operations (eg: cast/convert)
  • 當用到 bit timestamp uniqueidentifier 等資料型態
  • 用到 "TOP" keyword
  • INSERTS UPDATES DELETES
  • 所以最好避免執行上述的遠端查詢/交易

 

最後, 善用 Query Analyzer 查看 query plan 以確保大多數的資料查詢是在遠端上執行,而非近端 DB

cbw0731 發表在 痞客邦 PIXNET 留言(0) 人氣()

原文 - http://www.sqlteam.com/article/temporary-tables

暫存表(Temporary Tables)

CREATE TABLE #Yaks (
YakID int,
YakName char(30) )
  • table name 前加入"#", 表示這是一個暫存表(temporary table)
  • 當session 關閉時, 這個table 將會自動drop
  • 好的寫作習慣, 應在暫存表使用完畢後, 下指令去 drop, 而不是讓系統自動回收
  • 暫存表是存在主機記憶體中, 因此存取速度較快
  • 暫存 table 的限制:
  • 暫存表存在於"tempdb"這個database 裡
  • 如果有兩個使用者建立同一個名字的暫存表, 則他們會各自擁有獨立的一份, 互相不會干擾.
  • 若stored procedure A 建立了一個暫存表, 並呼叫 stored procedure B, 則在 B 中可以存取這個暫存表
  • 如果在SQL Server Management Studio or Query Analyzer 中建立的暫存表, 會等到我們手動drop 去關閉session 才會消失

 

表格變數(Table Variables)

當我們使用 SQL Server 2000 或以後的版本, 則可以考慮使用 "Table Variables" (表格變數); 使用方式如下例:

DECLARE @TibetanYaks TABLE (
YakID int,
YakName char(30) )

INSERT INTO @TibetanYaks (YakID, YakName)
SELECT YakID, YakName
FROM dbo.Yaks
WHERE YakType = 'Tibetan'

-- Do some stuff with the table

 

 

  • 它和暫存表類似, 但它更加彈性, 且不會存在於tempdb 中(完全存在於記憶體).
  • 使用完畢後, 不須手動去 drop它

 

兩者的使用時機

 

  • 當暫存的資料筆數小於100筆時, 使用表格變數, 否則, 可使用暫存表, 因為針對表格變數, SQL Server 不會去解析/最佳化它的效能.
  • 當我們須要對表格建立索引(Index)時, 則必須使用暫存表.
  • 在使用暫存表時, 最好能在建立後一併建立索引, 這能增加效能 (SQL Server 2005後, 這方面已改善, 所以可以不建索引; 但建立它仍是一個好習慣)

 

全域暫存表(Global Temporary Tables)

在表格名字前面, 加入兩個"#", 比如"##YakHerders", 則表示這是個全域暫存表, 也就是說, 這個表格和一般表格一樣, 可以被所有連線(connections/sessions)使用; 在SQL Server 中, 這樣的應用並不多見.

cbw0731 發表在 痞客邦 PIXNET 留言(1) 人氣()

原文 - http://www.sqlteam.com/article/sql-server-versions

 

SQL Server 版本一覽 (2010/1/18為止)

 

SQL Server 2008
10.00.27.57 SQL Server 2008 SP1 CU6 18 Jan 2010
10.00.2746 SQL Server 2008 SP1 CU5 24 Nov 2009
10.00.2734 SQL Server 2008 SP1 CU4 22 Sept 2009
10.00.2723 SQL Server 2008 SP1 CU3 21 July 2009
10.00.2714 SQL Server 2008 SP1 CU2 18 May 2009
10.00.2710 SQL Server 2008 SP1 CU1 16 Apr 2009
10.00.2531 SQL Server 2008 SP1 7 Apr 2009
10.00.1828 SQL Server 2008 RTM CU9 18 Jan 2009
10.00.1823 SQL Server 2008 RTM CU8 16 Nov 2009
10.00.1818 SQL Server 2008 RTM CU7 21 Sept 2009
10.00.1812 SQL Server 2008 RTM CU6 21 July 2009
10.00.1806 SQL Server 2008 RTM CU5 18 May 2009
10.00.1798 SQL Server 2008 RTM CU4 17 Mar 2009
10.00.1787 SQL Server 2008 RTM CU3 19 Jan 2009
10.00.1779 SQL Server 2008 RTM CU2 17 Nov 2008
10.00.1763 SQL Server 2008 RTM CU1 22 Sept 2008
10.00.1600 SQL Server 2008 RTM 6 Aug 2008
SQL Server 2005
9.00.4285 SQL Server 2005 SP3 CU8 16 Feb 2010
9.00.4273 SQL Server 2005 SP3 CU7 21 Dec 2009
9.00.4266 SQL Server 2005 SP3 CU6 19 Oct 2009
9.00.4230 SQL Server 2005 SP3 CU5 17 Aug 2009
9.00.4226 SQL Server 2005 SP3 CU4 16 June 2009
9.00.4220 SQL Server 2005 SP3 CU3 21 Apr 2009
9.00.4211 SQL Server 2005 SP3 CU2 17 Feb 2009
9.00.4207 SQL Server 2005 SP3 CU1 20 Dec 2008
9.00.4053 SQL Server 2005 SP3 GDR (Security Update) 13 Oct 2009
9.00.4035 SQL Server 2005 SP3 16 Dec 2008
9.00.3356 SQL Server 2005 SP2 CU17 21 Dec 2009
9.00.3355 SQL Server 2005 SP2 CU16 19 Oct 2009
9.00.3330 SQL Server 2005 SP2 CU15 18 Aug 2009
9.00.3328 SQL Server 2005 SP2 CU14 16 June 2009
9.00.3225 SQL Server 2005 SP2 CU13 21 Apr 2009
9.00.3315 SQL Server 2005 SP2 CU12 17 Feb 2009
9.00.3310 SQL Server 2005 Security Update 10 Feb 2009
9.00.3301 SQL Server 2005 SP2 CU11 15 Dec 2008
9.00.3294 SQL Server 2005 SP2 CU10 20 Oct 2008
9.00.3282 SQL Server 2005 SP2 CU9 18 Aug 2008
9.00.3257 SQL Server 2005 SP2 CU8 16 June 2008
9.00.3239 SQL Server 2005 SP2 CU7 14 April 2008
9.00.3233 SQL Server 2005 QFE Security Update 8 July 2008
9.00.3228 SQL Server 2005 SP2 CU6 18 Feb 2008
9.00.3215 SQL Server 2005 SP2 CU5 17 Dec 2007
9.00.3200 SQL Server 2005 SP2 CU4 15 Oct 2007
9.00.3186 SQL Server 2005 SP2 CU3 20 Aug 2007
9.00.3175 SQL Server 2005 SP2 CU2 28 June 2007
9.00.3161 SQL Server 2005 SP2 Cumulative Update 1 (CU1)  
9.00.3152 SQL Server 2005 SP2 Cumulative Hotfix 7 Mar 2007
9.00.3077 SQL Server 2005 Security Update 10 Feb 2009
9.00.3054 KB934458 - Also read Bob Ward's post on SP2. 5-Apr-07
9.00.3042.01 SQL Server 2005 "SP2a" 5-Mar-07
9.00.3042 SQL Server 2005 SP2 Feb-07
9.00.2047 SQL Server 2005 SP1  
9.00.1399 SQL Server 2005 RTM Nov-05
SQL Server 2000
8.00.2039 SQL Server 2000 SP4  
8.00.760 SQL Server 2000 SP3  
8.00.534 SQL Server 2000 SP2 30 Nov 2001
8.00.384 SQL Server 2000 SP1  
8.00.194 SQL Server 2000 RTM  
SQL Server 7
7.00.1063 SQL Server 7.0 SP4  
7.00.961 SQL Server 7.0 SP3 15 Dec 2000
7.00.842 SQL Server 7.0 SP2 20 Mar 2000
7.00.699 SQL Server 7.0 SP1 July 1999
7.00.623 SQL Server 7.0 / MSDE 1.0 RTM  
SQL Server 6.5
6.50.416 SQL Server 6.5 with Service Pack 5a  
6.50.415 SQL Server 6.5 with Service Pack 5  
6.50.281 SQL Server 6.5 with Service Pack 4  
6.50.258 SQL Server 6.5 with Service Pack 3  
6.50.240 SQL Server 6.5 with Service Pack 2  
6.50.213 SQL Server 6.5 with Service Pack 1  
6.50.201 SQL Server 6.5 RTM  
  • 查詢版本的指令
Select @@version

查詢結果如下(以我的環境為例):

Microsoft SQL Server 2005 - 9.00.3077.00 (Intel X86)

Dec 17 2008 15:19:45

Copyright (c) 1988-2005 Microsoft Corporation

Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)

 
  • 查詢相關資料的系統 sp:
exec master..xp_msver

 

cbw0731 發表在 痞客邦 PIXNET 留言(0) 人氣()

找更多相關文章與討論