顯示具有 DTS 標籤的文章。 顯示所有文章
顯示具有 DTS 標籤的文章。 顯示所有文章

2012年11月29日 星期四

[SQL2008R2]非sysadmin如何以最小權限執行舊版DTS?

        在SQL 2008之前的版本,像是SQL 2000,由於系統預設就把DTS 系統預存程序的「執行」權限授與 PUBLIC,所以只要有SQL登入帳號,就可以取得DTS封裝的清單;到了SQL 2005,用SSMS至管理/舊版/展開Data Transformation Services,會檢查是否有sysdtspackages的查詢權限,預設是沒有所以就看不到;SQL 2008更為了增加DTS封裝的安全性,已經撤銷 PUBLIC 對於 DTS 系統預存程序的「執行」權限呢!可參考保護儲存在 SQL Server 中的 DTS 封裝安全此篇的說明

2011年6月21日 星期二

在SQL Server 2008 R2中編輯與開啟 DTS 封裝檔案的問題

  今天小試了一下SQL 2008 R2對舊版DTS的支援程度,但我竟然花了快兩個小時還打不開DTS,我有參考如何:安裝 Data Transformation Services 封裝的支援這篇的說明來作喔,明明我該裝的都裝了,但一直出現請安裝SQL Server 2000 DTS 設計師元件的錯誤

2010年7月7日 星期三

如何散佈DTS元件(DTSRUN)

剛好同事需要在沒有安裝SQL Server上的伺服器上執行遠端DTS,要用DTSRUN,我把DTSRUN拷貝過去後發現無法使用,看來缺少一些檔案,上網查了一下,參考到Redistributing DTS with your program這篇,發覺檔案還不少,還得註冊dll,挺麻煩的,於是寫了簡單的SCRIPT與說明,有需要者自行更改部份內容,基本上如果用預設安裝SQL Server的,相關路徑應該就不用改

Step 1 將以下script存成batch檔後,在安裝有SQL 2000的來源端執行會產生C:\DTSuti\目錄

2010年6月2日 星期三

在 SQL2005中編輯舊版DTS時發生錯誤

  今天想測試看看舊版DTS在SQL2005上運作的狀況,於是就用Enterprise Manager打開DTS,然後將DTS另存到SQL2005上
  就在用SSMS打開舊版DTS封裝時,發生如下錯誤,見下圖

2009年10月9日 星期五

DTS的owner與owner_sid不一致的問題

最近同事反應SQL 2000的某個DTS無法儲存,會出現"Only the owner of DTS Package or a member of the sysadmin role may create new versions of it."的錯誤,意思就是只有此DTS的擁有者或是系統管理員的身分才能建立新的版本,目前那個DTS的owner不是他,那我改掉應該就行

上網查了一下發現可以用sp_reassign_dtspackageowner [@name =] 'name',[@id =] 'id',[@newloginname =] 'newloginname'來改變DTS的owner

2009年8月15日 星期六

取得DTS的屬性值與全域變數

因為之前設計了一個DTS定期撈取執行失敗的工作排程,然後會寄送mail通知相關負責人,頂多附上歷程紀錄的相關資訊,有時資訊一多,根本看不出來錯在哪裡,雖然封裝屬性裡可以設定錯誤紀錄檔,但是我不知怎麼取得相關資訊,我在資料庫裡找了好久都找不到,經過一段時間尋找,終於讓我發現啦,原來用VB Script可以取得該封裝的相關資訊啊,分享給各位囉

2009年4月19日 星期日

DTS的工作順序也許不是你想的那樣

之前設計DTS時,通常是每各轉換資料工作,有自己獨立的來源與目的地,然後一個轉換資料工作執行成功後,才作下一各轉換資料工作,中間用成功串連起來,結果昨天偷懶一下,試著兩個工作共用同一個來源與目的地,如下圖


原本以為執行的順序是[4002SQL1(1)]跟[4002SQL2(3)]都執行成功了,才執行[SQL2TXT3(2)]的,結果不是,如下圖

竟然[SQL2TXT3(2)]比[4002SQL(3)]早執行,要是[SQL2TXT3(2)]的工作,其中有資料是要靠[4002SQL2(3)]來傳輸的,那不就會有問題了嗎?
早知道就不要偷懶,乖乖一個一個的分開設比較安全!

後來發現,應該是我成功的工作流程屬性沒特別設定優先順序造成的,我從沒特別去設它...@@...如下圖以至於[4002SQL1(1)]完就接著作[SQL2TXT3(2)],所以那我再加入另一各步驟進來
執行後,終於跟我想的一樣了!!

2009年1月18日 星期日

AS400如何透過DTS轉入SQL Server2000

剛好同事問有沒有文件,想說順便寫一下設定步驟好囉!

1.請確定在你執行的那台server上已裝好Client Access囉,如果你想在Client端也能用,那Client端也要裝!
2-1.裝好後我通常是先設定ODBC啦,再[開始][執行]那邊輸入odbcad32,這邊之後再設也行


2-2. 然後在[ODBC資料來源管理員]畫面的[系統資料來名稱]頁籤,按下[新增]
2-3.在[建立新資料來源]畫面,選取[iSeries Access ODBC Driver],按下[完成 ]

2-4.在[iSeries Access for Windows ODBC設定]畫面的[一般]頁籤,設定[資料來源名稱],名稱看你想設定什都可,與[系統]的ip位址,也就是AS400的位置2-5. 切換到[伺服器]頁籤,設定[SQL的預設檔案庫],也就是AS400的Library囉,如果有多個的話,是設在下面的[檔案庫清單],然後按下[確定],ODBC的設定就完成囉!
3.這邊我就假設你已在DTS裡拉好一個[其他連線] ,然後你就在[連線屬性]的設定畫面裡,在下方的[使用者/系統DSN]那各下拉選單,選取你剛設好的資料來源,然後再設定與AS400連線的使用者名稱與密碼,就可以按下[確定]囉,我剛在第2步也說,ODBC也是可以這時候再設的,按下[新增]就可以在設定其他的囉,步驟與第2步差不多
4.若你之前的設定都正確的話,當你拉一個[轉換資料工作]時,在[來源]的屬性設定頁籤裡,[資料表/檢視表]下拉選單是可以看到那些在AS400的table的喔

2008年12月30日 星期二

如何從作業反查DTS封裝呢

最近剛好在整理資料庫,在辨認那些排程作業的用途,有些作業的名稱與DTS封裝名稱一樣,這種不須辨認,但是有的作業名稱偏偏取的完全與DTS不一樣,點進步驟裡看,又是一串加密值的十六進位文字"DTSRun /~Z0x5E4633AE...",這以小弟智商來說絕對看不懂的,於是想到從MSDB的資料表裡去看關聯性,結果完全對不起來,上網尋尋覓覓終於找到方法了,給各位參考,不過很不實用,因為結果是產生在剪貼簿裡,剪貼簿耶,有沒有搞錯,我還得用右鍵貼上才能看到結果...@@

1.在編輯作業步驟的命令那,把整串"DTSRun /~Z0x5E4633AE..."複製下來

2.打開命令提示字元

3. 把剛剛複製的那串文字貼上去


4. 在字串的最後面加上 /!X /!C


5.如下圖那樣,執行囉



6.就會看到上圖那個什麼載入中執行中


7.此時你再貼上,就可以看到DTS封裝的名稱囉,就是上圖紅線那行,我有用藍框框起來的地方,就是DTS的封裝名稱,了解了吧

2008年12月29日 星期一

DTS執行處理序工作很遜












原以為可以執行cmd下的所有東西,包含%%這種的變數,結果不行

C:\Winnt\system32\Cmd.exe /c "rename c:\mis.txt mistt%date:~4,4%.txt"

正常執行上面那行會把mis.txt更名為mistt2008.txt
結果只能更名為mistt.txt
這樣是不是很遜?
害我得寫vbscript,要不然用cmd把檔名更名為日期格式的檔名是多麼方便的一件事啊