2013年3月27日 星期三

升級為SQL Server Data Tools BI for VS 2012後

話說,SQL Server BI開發工具BIDS Business intellijgence Developer Studio 所用的版本總是落後Visual Studio一版

上週看到 SSDT(SQL 2012開始 BIDS已經改名為SQL Server Data Tools) 
Microsoft SQL Server Data Tools - Business Intelligence for Visual Studio 2012
下載安裝完後,原本vs2012的SQL Server Database Project 就沒法用了,出現了以下的錯誤訊息。


於是乎又去安裝了最新版的Microsoft® SQL Server® 2012 Data-Tier Application Framework (March 2013),也是沒路用.....
點了Learn more 及Get the lates version of SQL Server Data Tools的連結後,竟然是導引到

We are sorry. The page you requested cannot be found.


整個灰灑灑....

最後找回SQL Server Data Tools - December 2012 update(Visual Studio 2012)

重新安裝一次SSDT 後,就回復正常了.

同一個工具還分多個版本....金害啊...


SQL2012 SSL加密連線

需要測試sql server 2012 SSL加密連線
GOOGLE了幾篇文章後進行測試

1.如何啟用SQL Server的SSL加密
2.Setting up SSL encryption for SQL Server using certificates – Issues, tips & tricks
3.How to enable SSL encryption for an instance of SQL Server by using Microsoft Management Console
4.如何設定 SQL Server 2008 接受 SSL 加密連接 (需設定憑證)

先到微軟網站下載 makecert.exe
然後在DOS下執行
makecert -r -pe -n "CN=bev" -b 01/01/2013 -e 01/01/2036 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localMachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12

第一次建立時,搞不清CN要填什麼,大部份都說要填符合FQND(Fully Qualified Domain Name)的電腦名稱,但我的機器又未加入網域,所以第一次我就自已給了一個隨便符合FQND的名稱。
 
建立完後憑證後,再依KB的How to Configure the MMC Snap-in 設定進入憑證主控台在個人憑證下就可以看到憑證了

過程中,我是先使用 -sr currentuser 建立憑證,但進入主控台後,我在個人>>憑證目錄下看不到自已建立的憑證??
所以後來改用了-sr localMachine  就可看到所建立的憑證... (後來發現,看不到是因為用MMC進入主控台時是以目前帳號進入,而不是以本機電腦方式)

接著進入SQL Server Configuration Manager,在SQL Server網路組態>>SQL2012通訊協定內容,查看憑證頁籤下的下拉選單看不到任何的憑證???


再依著第三篇微軟KDB的Troubleshooting 步驟,先將個人憑證匯出後再匯入到受信任的根憑證授權單位下。
(匯出時我是選擇匯出私密金鑰,故會要求輸入一組密碼後,將憑證存成.pfx,故匯入時需要輸入相同密碼)

重啟sql server services,用SSMS開啟連結並以加密方式連結,就OK了.


不過我一直有個疑問,主機強制加密Force protocol encryption設為是時,代表伺服器強制SSL

但我試了一下,Client就算沒有勾選加密連線,一樣還是可以連接資料庫?
Client端還是可以不走SSL來連線?? WHY?

寫了一個測試網頁利用SSL連線,connection string  如下
<add name="test" connectionString="Data Source=testsvr;Initial Catalog=test;Persist Security Info=True;User ID=sa;password=sa;Encrypt=yes;TrustServerCertificate=True" providerName="System.Data.SqlClient" />

記得,本機要先把SSL憑證註冊到根目錄下。

2013年2月21日 星期四

腦力退化....null 值比較

今天在informix 做一個簡單的查詢時竟然對這個查詢結果懷疑了起來

create table test(col1 char(1) not null, col2 char(1));

insert into test values ('1' ,null);
insert into test values ('1' ,'1');

select * from test where col2 <> '1' ;

原本以為會回傳第一筆資料. 但卻回傳0筆.

以為是informix才會這樣,結果到sql server也是如此.

我的頭腦真是老化了,怎麼懷疑起這樣的結果呢.

null 與任何值比較應都是無法比的.

欄位值有null先轉型再比較唄

--tsql
select * from test where coalesce(col2,'') <> '1' ;

--informix
select * from test where nvl(col2,'') <> '1' ;


參考NULL 值說明

2013年2月5日 星期二

SSIS 連接管理員呼叫 AcquireConnection 方法失敗

[Oracle xxxx_sc [1]] 錯誤: SSIS 錯誤碼 DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。
對 "testOracle" 連接管理員呼叫 AcquireConnection 方法失敗,錯誤碼為 0xC0202009。
在此之前可能已公佈過錯誤訊息,說明 AcquireConnection 方法呼叫為何失敗的詳細資訊。

在工具列,專案下點選封裝名稱屬性,進入後,在組態屬性下的偵錯中,將Run64bitRunTime改為False即可。如下圖:


2013年1月22日 星期二

Could not update a row in the table.

利用datatable讀取及異動資料.
結果exception message為
ERROR [HY000] [Informix][Informix ODBC Driver][Informix]Could not update a row in the table.

錯在哪一筆也看不出來?
是資料被lock?

查了半天毫無頭緒.

最後只好一筆一筆loop逐筆檢查看是哪一筆寫不進去

結果這個錯誤緣自於unique index duplicate 造成的.

昏+暈....................................

2012年12月23日 星期日

需要執行物件,才能進行這項操作

人客的環境最近更新的informix ODBC的版本,由原來的3.11換成3.70 TC4。
在做DTS資料轉入時出現了以下的錯誤

步驟錯誤來源: Microsoft Data Transformation Services (DTS) Package
步驟錯誤描述:需要執行物件,才能進行這項操作
 (Microsoft Data Transformation Services (DTS) Package (80040005): 提供者產生的程式碼發生執行例外:  EXCEPTION_ACCESS_VIOLATION)
步驟錯誤碼: 80040005


Step Error Source: Microsoft Data Transformation Services (DTS) Package
Step Error Description:Need to run the object to perform this operation
(Microsoft Data Transformation Services (DTS) Package (80040005): Need to run the object to perform this operation
) (Microsoft Data Transformation Services (DTS) Data Pump (80040005): Code execution exception: EXCEPTION_ACCESS_VIOLATION)
Step Error code: 80040005


一如往常,這個錯誤訊息令人丈二金剛摸不著頭腦,用中文google半天,找不出什麼蛛絲馬跡可以測。換成英文去查,也都和遇到的狀況不太相同。

後來直接VNC過去,看到ODBC的設定才發現原來他的機器中,相同名稱的DSN,一個放在【使用者資料來源名稱】下使用的是舊版的DRIVER,另一個放在【系統資料來源名稱】下使用的是新版的DRIVER。

新舊版本同時存在沒什麼問題,但DSN名稱相同,我想這就讓DTS搞混了吧。


移除掉舊版的DSN,DTS就正常囉。

2012年12月15日 星期六

AS2000, Cannot connect to the repository.

在人客的主機上,做了幾件事
1.更改了sa 的密碼
2.更改DTS封裝檔中,動態屬性工件使用\\127.0.0.1\myWork$ 隱藏目錄 (因為資安限制,要把Server服務關掉了,所以無法再使用網芳)

好不容易把DTS都改完了, 接著要進入分析伺服器進行維護時,
哇列,剉屎....

分析管理員竟然無法連線...出現了以下這個錯誤

Cannot connect to the repository.

OLAP server: MYAS2000

Error:
[Microsoft][ODBC 驅動程式管理員] 找不到資料來源名稱且未指定預設的驅動程式


[Microsoft][ODBC Driver Manager] Data source name not found and no
default driver specified
 
什麼跟什麼啊...
根本還沒動到AS的任何東西啊.
而且關ODBC什麼事啊. AS repository 也不是用sa的帳號進行連線.

另外也測試了一下系統中,讀取MDX的功能, 明明連到AS就很正常..

但要進行partition process或者連線到分析伺服主機時, 就是有錯.

前前後後花了近3個小時GOOGLE...反覆關機開機測試..也把sa密碼改回來..

就是一直出錯.

最後心想,那重裝一下sql sever AS sp4看看好了, 結果竟然就OK了.

TMD. 這是我最後的結論. 但那3個小時實在是讓我嚇了一身冷汗啊。

2013/01/08 後記:
今天在公司的測試環境上,也出現了一樣的狀況,但訊息顯示為
[Microsoft][ODBC 驅動程式管理員] 資料來源名稱太

幸好有之前的經驗,先重裝AS SP4,馬上就解決了.

IIS 網站無法下載中文檔名檔案因為取消高位元字元

 網址+中文檔案名稱方式下載檔案顯示 404 - 找不到檔案或目錄。 但英數字檔案名稱則可下載。 因為設定GCB IIS,其中1項 將高位元字元預設取消勾選了。 27 TWGCB-04-014-0028 要求篩選與其他限制模組 允許高位元字元 這項原則設定決定查詢...