人客問了一個問題, 以下是他的sql
select
(select cast(pk as varchar(10) ) + ':' + col1 + char(10) from tabTest b
where a.coKey = b.colKey for xml path('')) as newCol
from tabTest a
where a.pk < 20
他用這段sql找出了同一個colKey下所有的筆數, 並將每一筆的 col1 組成一個字串,以換行符號隔開
所以在report designer 執行後就會跑出以下類似的結果
1:test1
2:test2
3:test3
4.test4
在設計的環境下,結果看來是ok,
但部署到report server後, 執行報表, 結果變成了
1:test1 2:test2 3:test3
4.test4
原本的換行效果不見了...
實測後,
在report designer 下, SSRS 2008 (sp1) 和SSRS 2005 (sp3) 跑出來的結果一切正常
但部署到report server 後, SSRS 2008 (sp1) 正常, 但SSRS 2005 (sp3) 就失效了...
看來是SSRS 2005的問題, render 時,不認得char(10)這個換行符號
於是,做點小手腳, 先將sql 改成如下,
select
(select cast(pk as varchar(10) ) + ':' + col1 + 'newLine' from tabTest b
where a.coKey = b.colKey for xml path('')) as newCol
from tabTest a
where a.pk < 20
然後在 rdl layout中, 將textbo 的expression設成
=replace( Fields!newCol.Value, "newLine",vbCRLF )
這樣在設計環境下預瀏覽ok
同時部署到report server 時,網頁上也能正常顯示換行了.
2010年3月11日 星期四
2010年3月10日 星期三
不支援關鍵字: 'provider'
想要在SSIS中呼叫自訂的DLL,其中需要動態傳入connection string,以方便在不同的環境中使用
於是在script task中,利用讀取dtsConfig中的connectionString,再傳遞給自訂的DLL method
執行時,在script task出現了一段錯誤
所以原本傳入
後記.....
同事在問, 你很奇怪耶, 既然要移掉Provider, 那何不在傳入時就不要給不就行了??
我也很想啊, 就是不行啊,一直出現
"ConnectionString 中未指定 OLE DB 提供者。正確範例為 Provider=SQLOLEDB;。"
於是在script task中,利用讀取dtsConfig中的connectionString,再傳遞給自訂的DLL method
執行時,在script task出現了一段錯誤
System.ArgumentException: 不支援關鍵字: 'provider'。
於 System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable, String connectionString, Boolean buildChain, Hashtable
synonyms, Boolean firstKey)
於 System.Data.Common.DbConnectionOptions..ctor(String connectionString, Hashtable synonyms, Boolean useOdbcRules)
於 System.Data.SqlClient.SqlConnectionString..ctor(String connectionString)
於 System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString, DbConnectionOptions previous)
於 System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(String connectionString, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions)
於 System.Data.SqlClient.SqlConnection.ConnectionString_Set(String value)
於 System.Data.SqlClient.SqlConnection.set_ConnectionString(String value)
於 System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Initialize(IDataServices dataServices, Object connection)
於 System.Data.Linq.DataContext.Init(Object connection, MappingSource mapping)
於 System.Data.Linq.DataContext..ctor(String fileOrServerOrConnection, MappingSource mapping)
於 System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable, String connectionString, Boolean buildChain, Hashtable
synonyms, Boolean firstKey)
於 System.Data.Common.DbConnectionOptions..ctor(String connectionString, Hashtable synonyms, Boolean useOdbcRules)
於 System.Data.SqlClient.SqlConnectionString..ctor(String connectionString)
於 System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString, DbConnectionOptions previous)
於 System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(String connectionString, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions)
於 System.Data.SqlClient.SqlConnection.ConnectionString_Set(String value)
於 System.Data.SqlClient.SqlConnection.set_ConnectionString(String value)
於 System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Initialize(IDataServices dataServices, Object connection)
於 System.Data.Linq.DataContext.Init(Object connection, MappingSource mapping)
於 System.Data.Linq.DataContext..ctor(String fileOrServerOrConnection, MappingSource mapping)
於是乎,將dtsConfig中connectionstring的provider移除, 接著又出現了以下的錯誤
"ConnectionString 中未指定 OLE DB 提供者。正確範例為 Provider=SQLOLEDB;。"
於是乎,又將dtsConfig中connectionstring的Provider改成 Provider=SQLOLEDB
怎麼著..., 又出現剛剛的 不支援關鍵字: 'provider'。 的錯誤...
也過給多種不同的連線字串,也爬了很久很久的文, 攏無法度解決....
唉, 同樣的連線字串,在不同的地方使用, 有的OK, 有的出搥...
最後, 試了半天,只好先在自訂的DLL,把接收過來的連線字串中,其中Provider的關鍵字後的字串全移除掉
所以原本傳入
Data Source=ttt;User ID=sa;Password=1234;Initial Catalog=test;Provider=SQLNCLI.1;Persist Security Info=True;
取代後就變成
Data Source=ttt;User ID=sa;Password=1234;Initial Catalog=test;
然後,我的SSIS就可以正常執行了.
方法不好,只能解燃眉之急, 還得要Provider=SQLNCLI.1;Persist Security Info=True;這段寫在最後面才行
後記.....
同事在問, 你很奇怪耶, 既然要移掉Provider, 那何不在傳入時就不要給不就行了??
我也很想啊, 就是不行啊,一直出現
"ConnectionString 中未指定 OLE DB 提供者。正確範例為 Provider=SQLOLEDB;。"
到底connectionString 要怎麼給呢?
SQL Agent 執行 SSIS Package
先建立一個 Credential
1.先新增一個本機的使用者帳號,例如ssisRunner
2.在sql server management studio下, 展開Security,Credential按右鍵,New Credential,在Identity輸入步驟1建立的使用者帳號
再建立一個Proxies
1.在sql server management studio下,展開SQL Server Agent 下的Proxies,在SSIS Package Execution按右鍵New Proxy,新建一個Proxy
2.在Active to the following subsystems下,勾選 SQL Server Integration Package
新增job
1.在sql server management studio下,SQL Server Agent Job新增一個工作,
1.在step 中,Type選SQL Server Integration Services Package,
2.Run as指定為前述建立的ssisRunner
3.在General頁籤,Package Source 選擇File System, 然後輸入Package 所在的位址
完成後, 這樣就可以透過SQL Agent來執行package囉
1.先新增一個本機的使用者帳號,例如ssisRunner
2.在sql server management studio下, 展開Security,Credential按右鍵,New Credential,在Identity輸入步驟1建立的使用者帳號
再建立一個Proxies
1.在sql server management studio下,展開SQL Server Agent 下的Proxies,在SSIS Package Execution按右鍵New Proxy,新建一個Proxy
2.在Active to the following subsystems下,勾選 SQL Server Integration Package
新增job
1.在sql server management studio下,SQL Server Agent Job新增一個工作,
1.在step 中,Type選SQL Server Integration Services Package,
2.Run as指定為前述建立的ssisRunner
3.在General頁籤,Package Source 選擇File System, 然後輸入Package 所在的位址
完成後, 這樣就可以透過SQL Agent來執行package囉
2010年3月2日 星期二
C1StudioEnterpriseMSVS key
維護一個好久好久的專案,
用到一個免費版本的元件 Microsoft(R) Visual Basic(R) .NET Resource Kit CD and the ComponentOne Studio Enterprise for Microsoft Visual Studio(R) .NET Product
.net 1.1年代的東西...找了好久,才找到所需要的LICENSE....哭.
SE302M1-CF-144817
獻給有需要的人...應該沒有人還會需要那麼舊的東西吧...
但....
我
需
要
用到一個免費版本的元件 Microsoft(R) Visual Basic(R) .NET Resource Kit CD and the ComponentOne Studio Enterprise for Microsoft Visual Studio(R) .NET Product
.net 1.1年代的東西...找了好久,才找到所需要的LICENSE....哭.
SE302M1-CF-144817
獻給有需要的人...應該沒有人還會需要那麼舊的東西吧...
但....
我
需
要
2010年2月8日 星期一
windows 7, Firefox 儲存本機tiddlywiki的問題
換了WINDOWS 7後,用FIREFOX開TIDDLYWIKI又發生了不能儲存的提示訊息,很煩
看了一下自已以前的記錄Firefox 儲存本機tiddlywiki的問題 ,想如法泡製解方法時,一直無法存取Documents and Settings這個目錄
原來,WINDOWS 7已經不用這個目錄了,現在和使用者有關的文件都放在C:\使用者 ,
所以在WINDOW7,要修改C:\Users\beverly\AppData\Roaming\Mozilla\Firefox\Profiles\jqqz7en1.default\prefs.js (記得先備份.js)找到以下這二行
user_pref("capability.principal.codebase.p0.granted", "UniversalXPConnect UniversalBrowserRead");
user_pref("capability.principal.codebase.p0.id", "file://");
把user_pref("capability.principal.codebase.p0.id", "file://"); 改成
user_pref("capability.principal.codebase.p0.id", file://C:/BEV/Wiki/PrinceTiddly/BevTips/index.html);
就OK囉.
看了一下自已以前的記錄Firefox 儲存本機tiddlywiki的問題 ,想如法泡製解方法時,一直無法存取Documents and Settings這個目錄
原來,WINDOWS 7已經不用這個目錄了,現在和使用者有關的文件都放在C:\使用者 ,
所以在WINDOW7,要修改C:\Users\beverly\AppData\Roaming\Mozilla\Firefox\Profiles\jqqz7en1.default\prefs.js (記得先備份.js)找到以下這二行
user_pref("capability.principal.codebase.p0.granted", "UniversalXPConnect UniversalBrowserRead");
user_pref("capability.principal.codebase.p0.id", "file://");
把user_pref("capability.principal.codebase.p0.id", "file://"); 改成
user_pref("capability.principal.codebase.p0.id", file://C:/BEV/Wiki/PrinceTiddly/BevTips/index.html);
就OK囉.
2010年2月4日 星期四
建立DNN 5 網站
FOLLOW DNN已經有一段時間了,這個OPEN SOURCE的網站算是我學習網站程式開發的起蒙導師吧.
第一個專案從4.5的版本開始,到案子結束時,已經升級到4.8.02. 所以DNN的更新週期算是很快吧.
利用這個有現成架構的網站,基本上你的網站建立起來後,就有使用者、選單功能及使用者權限管理功能,所以只要專心開發你的客製化頁面程式即可.
當然,DNN本身也提供很多現成的模組Module,像是公告,連結,BLOG,IFRAME,HTML....很多啦.
我的安裝方式都是選擇下載SOURCE CODE,然後自行定義IIS建立網站.
所以
第一步,先到DNN網站下載SOURCE CODE,下載後,解壓縮, 現在的版本是5.02.02 (4.X和5.X的UI差很大....5.X的真是漂亮多了...)
第二步,要先在SQL SERVER CREATE DATABASE, 名字隨你高興取
第三步,在SOURCE CODE目錄下,先COPY release.config 為 web.config, 然後修改里頭有關資料庫的連線字串,把initial catalog 改成第二步建好的DB NAME, 指定好連線字串中的uid及pwd,總共有二行要改,一個在 connectionStrings tag,一個在appSettings tag下
第四步,在IIS預設網站下建立一個虛擬目錄,例如叫DNN5,然後實體路徑指向SOURCE CODE中WEBSITE目錄(例如C:\DotNetNuke_Community_05.02.02_Source\Website)
第五步,將實體WEBSITE目錄的安全性中加入NETWORK SERVICE帳號(WIN2003 及WIN 7)或ASPNET帳號(XP),勾選可修改
第六步,開啟IE,在網址列打上http://localhost/dnn5/install/install.aspx, 然後就開始安裝囉....不會問你有的沒的
若要執行一步一步安裝,則http://localhost/dnn5/install/installwizard.aspx
然後建站就完成了.
第一個專案從4.5的版本開始,到案子結束時,已經升級到4.8.02. 所以DNN的更新週期算是很快吧.
利用這個有現成架構的網站,基本上你的網站建立起來後,就有使用者、選單功能及使用者權限管理功能,所以只要專心開發你的客製化頁面程式即可.
當然,DNN本身也提供很多現成的模組Module,像是公告,連結,BLOG,IFRAME,HTML....很多啦.
我的安裝方式都是選擇下載SOURCE CODE,然後自行定義IIS建立網站.
所以
第一步,先到DNN網站下載SOURCE CODE,下載後,解壓縮, 現在的版本是5.02.02 (4.X和5.X的UI差很大....5.X的真是漂亮多了...)
第二步,要先在SQL SERVER CREATE DATABASE, 名字隨你高興取
第三步,在SOURCE CODE目錄下,先COPY release.config 為 web.config, 然後修改里頭有關資料庫的連線字串,把initial catalog 改成第二步建好的DB NAME, 指定好連線字串中的uid及pwd,總共有二行要改,一個在 connectionStrings tag,一個在appSettings tag下
第四步,在IIS預設網站下建立一個虛擬目錄,例如叫DNN5,然後實體路徑指向SOURCE CODE中WEBSITE目錄(例如C:\DotNetNuke_Community_05.02.02_Source\Website)
第五步,將實體WEBSITE目錄的安全性中加入NETWORK SERVICE帳號(WIN2003 及WIN 7)或ASPNET帳號(XP),勾選可修改
第六步,開啟IE,在網址列打上http://localhost/dnn5/install/install.aspx, 然後就開始安裝囉....不會問你有的沒的
若要執行一步一步安裝,則http://localhost/dnn5/install/installwizard.aspx
然後建站就完成了.
2010年2月1日 星期一
查看trigger語法
因為透過telnet 用isql做事,想看某個trigger的內容
可以這麼下
isql -E -d dbName -Q "sp_helptext 'triggerName' " -o test.txt
type test.txt |more
可以這麼下
isql -E -d dbName -Q "sp_helptext 'triggerName' " -o test.txt
type test.txt |more
訂閱:
文章 (Atom)
IIS 網站無法下載中文檔名檔案因為取消高位元字元
網址+中文檔案名稱方式下載檔案顯示 404 - 找不到檔案或目錄。 但英數字檔案名稱則可下載。 因為設定GCB IIS,其中1項 將高位元字元預設取消勾選了。 27 TWGCB-04-014-0028 要求篩選與其他限制模組 允許高位元字元 這項原則設定決定查詢...
-
一個老舊的aspx web form專案,調了一些功能建置成功,但進行部署時顯示以下錯誤。 在應用程式層級之外使用註冊為 allowDefinition='MachineToApplication' 的區段發生錯誤。錯誤的原因可能是虛擬目錄尚未在 IIS 中設定為...
-
Row.Cells[2].Text == "abc" ? "ok" : "not ok" ; 或加入Microsoft. VisualBasic 參考使用 vb namespace using Microsoft...
-
freeFTPd是套免費的SFTP SERVER支援22 port SFTP及21port FTP,一般找到免費的都不支援SFTP只有技援FTPS。 之前一直有個困擾在幾台主機安裝後,有幾台重開機後,SFTP SERVER必須手動去啟動,一直以來老是搞不懂為什麼,今天看到一篇文...