tabTest 和tabBackup有相同的欄位結構, primary key皆設為identity
insert into tabTest select * from tabBackup
執行時,會有如下錯誤
XXX的識別資料行其外顯值只有當使用了資料行清單且 IDENTITY_INSERT 為 ON 時才能指定。
常遇的問題,但每次都會忘了要怎麼做.
set IDENTITY_INSERT tabBackup on
Go
insert into tabBackup ( col1, col2, col3)
select * from tabTest
Go
所以SQL Server 的訊息寫的挺清楚
當使用了資料行清單
IDENTITY_INSERT 為 ON 時
這讓我想起,人客有時跟我哭夭說, 系統很爛,我只是按個BUTTON資料怎麼會不見咧..
可是明明按下BUTTON時,系統都有confirm 警告說會刪除資料,
你要按下確定, 我有什麼辦法啊..... 機車咧....
所以訊息要好好看啦
2010年7月14日 星期三
2010年7月11日 星期日
Dos Command , systeminfo
在DOS Command下, 利用 systeminfo來查看系統資訊
以我的機器測試,結果輸出如下, 挺詳細的咧, 還列出曾上過的hotfix
主機名稱: XXX
作業系統名稱: Microsoft Windows 7 專業版
作業系統版本: 6.1.7600 不適用 組建 7600
作業系統製造商: Microsoft Corporation
作業系統設定: 獨立工作站
作業系統組建類型: Multiprocessor Free
註冊的擁有者: XXXXX
註冊公司:
產品識別碼: 55041-OEM-8992671-00437
原始安裝日期: 2010/1/30, 下午 07:58:54
系統開機時間: 2010/7/12, 上午 08:40:10
系統製造商: LENOVO
系統型號: 2767PM1
系統類型: x64-based PC
處理器: 已安裝 1 處理器。
[01]: Intel64 Family 6 Model 23 Stepping 10 GenuineIntel ~2801 Mhz
BIOS 版本: LENOVO 7UET79WW (3.09 ), 2009/10/13
Windows 目錄: C:\Windows
系統目錄: C:\Windows\system32
開機裝置: \Device\HarddiskVolume2
系統地區設定: zh-tw;中文 (台灣)
輸入法地區設定: zh-tw;中文 (台灣)
時區: (UTC+08:00) 台北
實體記憶體總計: 3,992 MB
可用實體記憶體: 868 MB
虛擬記憶體: 大小上限: 7,982 MB
虛擬記憶體: 可用: 3,888 MB
虛擬記憶體: 使用中: 4,094 MB
分頁檔位置: C:\pagefile.sys
網域: WORKGROUP
登入伺服器: \\XXX
Hotfix: 已安裝 47 Hotfix。
[01]: KB971033
[02]: KB958488
[03]: KB971468
[04]: KB972270
[05]: KB973525
[06]: KB974332
[07]: KB974431
[08]: KB974476
[09]: KB974571
[10]: KB975467
[11]: KB975496
[12]: KB975560
[13]: KB976098
[14]: KB976264
[15]: KB976422
[16]: KB976662
[17]: KB977074
[18]: KB977863
[19]: KB978207
[20]: KB978251
[21]: KB978262
[22]: KB978506
[23]: KB978542
[24]: KB978601
[25]: KB978637
[26]: KB979099
[27]: KB979306
[28]: KB979309
[29]: KB979482
[30]: KB979559
[31]: KB979683
[32]: KB979900
[33]: KB979916
[34]: KB980182
[35]: KB980195
[36]: KB980218
[37]: KB980232
[38]: KB980302
[39]: KB980408
[40]: KB980846
[41]: KB981078
[42]: KB981332
[43]: KB981793
[44]: KB982381
[45]: KB982519
[46]: KB982632
[47]: KB982666
網路卡: 已安裝 6 NIC。
[01]: Intel(R) 82567LM Gigabit Network Connection
連線名稱: 區域連線
DHCP 已啟用: 是
DHCP 伺服器: 192.168.0.1
IP 位址
[01]: 192.168.0.111
[02]:XXXXXXXXXXXXXXXXXXXXX
[02]: Intel(R) WiFi Link 5300 AGN
連線名稱: 無線網路連線
狀態: 媒體已中斷連線
[03]: VMware Virtual Ethernet Adapter for VMnet1
連線名稱: VMware Network Adapter VMnet1
DHCP 已啟用: 否
IP 位址
[01]: 192.168.232.1
[02]: fXXXXXXXXXXXXXXX
[04]: Bluetooth Device (Personal Area Network)
連線名稱: Bluetooth 網路連線
狀態: 媒體已中斷連線
[05]: Microsoft Virtual WiFi Miniport Adapter
連線名稱: 無線網路連線 2
狀態: 媒體已中斷連線
[06]: VMware Virtual Ethernet Adapter for VMnet8
連線名稱: VMware Network Adapter VMnet8
DHCP 已啟用: 否
IP 位址
[01]: 192.168.59.1
[02]:XXXXXXXXXXXXXXX
以我的機器測試,結果輸出如下, 挺詳細的咧, 還列出曾上過的hotfix
主機名稱: XXX
作業系統名稱: Microsoft Windows 7 專業版
作業系統版本: 6.1.7600 不適用 組建 7600
作業系統製造商: Microsoft Corporation
作業系統設定: 獨立工作站
作業系統組建類型: Multiprocessor Free
註冊的擁有者: XXXXX
註冊公司:
產品識別碼: 55041-OEM-8992671-00437
原始安裝日期: 2010/1/30, 下午 07:58:54
系統開機時間: 2010/7/12, 上午 08:40:10
系統製造商: LENOVO
系統型號: 2767PM1
系統類型: x64-based PC
處理器: 已安裝 1 處理器。
[01]: Intel64 Family 6 Model 23 Stepping 10 GenuineIntel ~2801 Mhz
BIOS 版本: LENOVO 7UET79WW (3.09 ), 2009/10/13
Windows 目錄: C:\Windows
系統目錄: C:\Windows\system32
開機裝置: \Device\HarddiskVolume2
系統地區設定: zh-tw;中文 (台灣)
輸入法地區設定: zh-tw;中文 (台灣)
時區: (UTC+08:00) 台北
實體記憶體總計: 3,992 MB
可用實體記憶體: 868 MB
虛擬記憶體: 大小上限: 7,982 MB
虛擬記憶體: 可用: 3,888 MB
虛擬記憶體: 使用中: 4,094 MB
分頁檔位置: C:\pagefile.sys
網域: WORKGROUP
登入伺服器: \\XXX
Hotfix: 已安裝 47 Hotfix。
[01]: KB971033
[02]: KB958488
[03]: KB971468
[04]: KB972270
[05]: KB973525
[06]: KB974332
[07]: KB974431
[08]: KB974476
[09]: KB974571
[10]: KB975467
[11]: KB975496
[12]: KB975560
[13]: KB976098
[14]: KB976264
[15]: KB976422
[16]: KB976662
[17]: KB977074
[18]: KB977863
[19]: KB978207
[20]: KB978251
[21]: KB978262
[22]: KB978506
[23]: KB978542
[24]: KB978601
[25]: KB978637
[26]: KB979099
[27]: KB979306
[28]: KB979309
[29]: KB979482
[30]: KB979559
[31]: KB979683
[32]: KB979900
[33]: KB979916
[34]: KB980182
[35]: KB980195
[36]: KB980218
[37]: KB980232
[38]: KB980302
[39]: KB980408
[40]: KB980846
[41]: KB981078
[42]: KB981332
[43]: KB981793
[44]: KB982381
[45]: KB982519
[46]: KB982632
[47]: KB982666
網路卡: 已安裝 6 NIC。
[01]: Intel(R) 82567LM Gigabit Network Connection
連線名稱: 區域連線
DHCP 已啟用: 是
DHCP 伺服器: 192.168.0.1
IP 位址
[01]: 192.168.0.111
[02]:XXXXXXXXXXXXXXXXXXXXX
[02]: Intel(R) WiFi Link 5300 AGN
連線名稱: 無線網路連線
狀態: 媒體已中斷連線
[03]: VMware Virtual Ethernet Adapter for VMnet1
連線名稱: VMware Network Adapter VMnet1
DHCP 已啟用: 否
IP 位址
[01]: 192.168.232.1
[02]: fXXXXXXXXXXXXXXX
[04]: Bluetooth Device (Personal Area Network)
連線名稱: Bluetooth 網路連線
狀態: 媒體已中斷連線
[05]: Microsoft Virtual WiFi Miniport Adapter
連線名稱: 無線網路連線 2
狀態: 媒體已中斷連線
[06]: VMware Virtual Ethernet Adapter for VMnet8
連線名稱: VMware Network Adapter VMnet8
DHCP 已啟用: 否
IP 位址
[01]: 192.168.59.1
[02]:XXXXXXXXXXXXXXX
temp table and table variables
temp table 包含local (#tmpTest, by sessionid) 以及global (##tmpTest) 都是 physical tables, 用法就像一般的table一樣,
1.可以alter,drop
2.可以create index, pk
3.transaction logs也會記錄其變動
4.loacal temp table 在此session內都可使用
table variables
1.可以建立 pk
2.無法create non-clustered Indexes
3.transaction logs不會記錄其變動 ,不管 table variables 是否有包含在transaction中, 自已都是獨立的
4.沒有統計資訊
5.一執行完畢馬上消失
6.使用時機為適用在較小資料且不考慮index 時的暫存處理
什麼叫較小的資料處理? 見人見智吧,自已要實測. 我自已大都用在user defined function 回傳table,或者執行Stored procedure 回傳資料集 , 例如, insert into @tmp exec zspMyProcedure
1.可以alter,drop
2.可以create index, pk
3.transaction logs也會記錄其變動
4.loacal temp table 在此session內都可使用
table variables
1.可以建立 pk
2.無法create non-clustered Indexes
3.transaction logs不會記錄其變動 ,不管 table variables 是否有包含在transaction中, 自已都是獨立的
4.沒有統計資訊
5.一執行完畢馬上消失
6.使用時機為適用在較小資料且不考慮index 時的暫存處理
什麼叫較小的資料處理? 見人見智吧,自已要實測. 我自已大都用在user defined function 回傳table,或者執行Stored procedure 回傳資料集 , 例如, insert into @tmp exec zspMyProcedure
不同欄位順序的index差異?
最近同事一直在做SQL Server 2000的效能測試...看他很HIGH的樣子, 我一直在想 "代誌是不是搵想A卡哩啊簡單" ?.
所以我也花了時間,來看看他給我的測試
這個測試是有關index 欄位順序調整或合併, 是否有助於效能提昇
他給的測試方法是觀察Logical Reads 和Physical Reads
由這二個值的觀察,可洐生出了SQL Server:Buffer Manager - Buffer Cache Hit Ratio
按照他給的公式定義 SQL Server:Buffer Manager - Buffer Cache Hit Ratio= logical reads – physical reads)/logical read * 100%
所以數值愈大,代表資料直接由data buffer 也就是記憶體的比例愈大, 相對減少對DISK 的讀取.
問題是什麼情況下, Buffer Cache Hit Ratio 會變大?
要嗎是Logical Reads變大, 要嗎是Physical Reads變小.
但如果以同一個查詢語法來看,在不清除buffer的情況下, 理論上 Logical Reads應該是要相同才對, 而且Physical Reads應該在第一次查詢時, 會變成0. 當然, 假設的前提是, 只有一個測試連線, 以上結論才會成立吧.而且,這個counter也需在一段時間的記錄後才能取得到較正確的值, 所以在測試階段,只先針對一個使用者一個相同的SQL來測試, 這個數值一點幫助也沒有.
google了一些資訊,還是做了一下測試, 在只有我一個使用者的情況下...
1.先設定SET STATISTICS IO ON 及SET STATISTICS TIME ON, 以返回每個查詢的統計資料和執行時間
2.每個查詢前,皆先清除buffer , 包含dirty buffer也須清除(可看MSDN說明)
CHECKPOINTGo
DBCC DROPCLEANBUFFERS
Go
DBCC FREEPROCCACHE
Go
依不同的index建立進行測試,分別select 所有欄位及部份欄位來查看Logical Reads 和Physical Reads
為什麼要重建index並整合index?
原本有二個index, 其中一組是由7個欄位組成的index, 另一組則是3個欄位組成的index.
index1 = (col1, col2, col3,col4,col5,col6,col7)
index2 = (col7, col1, col3 )
當初建立這二個index的用意在於, 第一組為unique index, 第二組則為常用的insert/delete/select條件. 當時是覺得(只是自已理論上的推測,也沒有經過實測和實證....)建立index時的欄位順序應該會差別,所以就建了二組
同事測試後,覺得應該只要建一組就好, 所以最後將index改為index3 (col7, col1,col3, col2, col3,col4,col5,col6,col7) 想要看看有沒有改善.
所以, 這次的重點就在測試index調整後到底有沒有改善 Logical Reads了
因為相同的查詢,所傳回的Logical Reads應該要相同, 所以在改變了index後,觀察Logical Reads是否有降低應該就可以知道改善的程度.
測試SQL除返回欄位數不一外,其WHERE條件皆相同, 皆使用到 col7, col1, col3
不同的返回欄位數也有差, 端看其是否符合covering index的使用,可參考這篇文章Tips on Optimizing Covering Indexes
結果如下:
返回所有欄位時,
index3:
資料表 'xxxx_tab'。掃描次數 2,邏輯讀入 7842,實體讀取 3,先讀讀入 4252。
伺服器執行次數: CPU時間 = 375 ms,經過時間 = 109339 ms。
index1+index2
資料表 'xxxx_tab'。掃描次數 2,邏輯讀入 7804,實體讀取 3,先讀讀入 4258。
伺服器執行次數: CPU時間 = 422 ms,經過時間 = 109294 ms。
返回部份較少欄位(含index 部份欄位col1 + 無index的欄位)
index3
資料表 'xxxx_tab'。掃描次數 2,邏輯讀入 7842,實體讀取 2,先讀讀入 4296。
伺服器執行次數: CPU時間 = 172 ms,經過時間 = 8443 ms。
index1+index2
資料表 'xxxx_tab'。掃描次數 2,邏輯讀入 7804,實體讀取 3,先讀讀入 4258。
伺服器執行次數: CPU時間 = 219 ms,經過時間 = 3570 ms。
返回部份較多欄位(含index 部份欄位col7, col1,col3+ 無index的欄位)
index3:
資料表 'xxxx_tab'。掃描次數 2,邏輯讀入 7842,實體讀取 2,先讀讀入 4296。
伺服器執行次數: CPU時間 = 203 ms,經過時間 = 5573 ms。
index1+index2
資料表 'xxxx_tab'。掃描次數 2,邏輯讀入 7804,實體讀取 3,先讀讀入 4258。
伺服器執行次數: CPU時間 = 219 ms,經過時間 = 3570 ms。
很粗糙的測試,得到的結論是, 在記憶體配置不變的情況下,合併成一個index 會讓Logical Reads變大,Physical Reads變小....所以合併成一個index應是有幫助的
哈哈...看錯記錄, 合併成一個index會讓Logical Reads變大
最後個人的感想是,...這樣的測試資訊,十分不足,很片面, 所以tuning這款代誌金正不是笨人想A卡里啊簡單
因為我們忽略了許多因素, 光是自已一個人做測試時, 就有很多的假設前提, 更何況是尖峰刻,user可是殺紅了眼在搶resource啊.
效能調校真的很花時間, 沒有意志力就甭做DBA了, 拿來做飯後閒餘時的興趣研究,真的可以打發不少時間..
所以我也花了時間,來看看他給我的測試
這個測試是有關index 欄位順序調整或合併, 是否有助於效能提昇
他給的測試方法是觀察Logical Reads 和Physical Reads
由這二個值的觀察,可洐生出了SQL Server:Buffer Manager - Buffer Cache Hit Ratio
按照他給的公式定義 SQL Server:Buffer Manager - Buffer Cache Hit Ratio= logical reads – physical reads)/logical read * 100%
所以數值愈大,代表資料直接由data buffer 也就是記憶體的比例愈大, 相對減少對DISK 的讀取.
問題是什麼情況下, Buffer Cache Hit Ratio 會變大?
要嗎是Logical Reads變大, 要嗎是Physical Reads變小.
但如果以同一個查詢語法來看,在不清除buffer的情況下, 理論上 Logical Reads應該是要相同才對, 而且Physical Reads應該在第一次查詢時, 會變成0. 當然, 假設的前提是, 只有一個測試連線, 以上結論才會成立吧.而且,這個counter也需在一段時間的記錄後才能取得到較正確的值, 所以在測試階段,只先針對一個使用者一個相同的SQL來測試, 這個數值一點幫助也沒有.
google了一些資訊,還是做了一下測試, 在只有我一個使用者的情況下...
1.先設定SET STATISTICS IO ON 及SET STATISTICS TIME ON, 以返回每個查詢的統計資料和執行時間
2.每個查詢前,皆先清除buffer , 包含dirty buffer也須清除(可看MSDN說明)
CHECKPOINTGo
DBCC DROPCLEANBUFFERS
Go
DBCC FREEPROCCACHE
Go
依不同的index建立進行測試,分別select 所有欄位及部份欄位來查看Logical Reads 和Physical Reads
為什麼要重建index並整合index?
原本有二個index, 其中一組是由7個欄位組成的index, 另一組則是3個欄位組成的index.
index1 = (col1, col2, col3,col4,col5,col6,col7)
index2 = (col7, col1, col3 )
當初建立這二個index的用意在於, 第一組為unique index, 第二組則為常用的insert/delete/select條件. 當時是覺得(只是自已理論上的推測,也沒有經過實測和實證....)建立index時的欄位順序應該會差別,所以就建了二組
同事測試後,覺得應該只要建一組就好, 所以最後將index改為index3 (col7, col1,col3, col2, col3,col4,col5,col6,col7) 想要看看有沒有改善.
所以, 這次的重點就在測試index調整後到底有沒有改善 Logical Reads了
因為相同的查詢,所傳回的Logical Reads應該要相同, 所以在改變了index後,觀察Logical Reads是否有降低應該就可以知道改善的程度.
測試SQL除返回欄位數不一外,其WHERE條件皆相同, 皆使用到 col7, col1, col3
不同的返回欄位數也有差, 端看其是否符合covering index的使用,可參考這篇文章Tips on Optimizing Covering Indexes
結果如下:
返回所有欄位時,
index3:
資料表 'xxxx_tab'。掃描次數 2,邏輯讀入 7842,實體讀取 3,先讀讀入 4252。
伺服器執行次數: CPU時間 = 375 ms,經過時間 = 109339 ms。
index1+index2
資料表 'xxxx_tab'。掃描次數 2,邏輯讀入 7804,實體讀取 3,先讀讀入 4258。
伺服器執行次數: CPU時間 = 422 ms,經過時間 = 109294 ms。
返回部份較少欄位(含index 部份欄位col1 + 無index的欄位)
index3
資料表 'xxxx_tab'。掃描次數 2,邏輯讀入 7842,實體讀取 2,先讀讀入 4296。
伺服器執行次數: CPU時間 = 172 ms,經過時間 = 8443 ms。
index1+index2
資料表 'xxxx_tab'。掃描次數 2,邏輯讀入 7804,實體讀取 3,先讀讀入 4258。
伺服器執行次數: CPU時間 = 219 ms,經過時間 = 3570 ms。
返回部份較多欄位(含index 部份欄位col7, col1,col3+ 無index的欄位)
index3:
資料表 'xxxx_tab'。掃描次數 2,邏輯讀入 7842,實體讀取 2,先讀讀入 4296。
伺服器執行次數: CPU時間 = 203 ms,經過時間 = 5573 ms。
index1+index2
資料表 'xxxx_tab'。掃描次數 2,邏輯讀入 7804,實體讀取 3,先讀讀入 4258。
伺服器執行次數: CPU時間 = 219 ms,經過時間 = 3570 ms。
很粗糙的測試,得到的結論是, 在記憶體配置不變的情況下
哈哈...看錯記錄, 合併成一個index會讓Logical Reads變大
最後個人的感想是,...這樣的測試資訊,十分不足,很片面, 所以tuning這款代誌金正不是笨人想A卡里啊簡單
因為我們忽略了許多因素, 光是自已一個人做測試時, 就有很多的假設前提, 更何況是尖峰刻,user可是殺紅了眼在搶resource啊.
效能調校真的很花時間, 沒有意志力就甭做DBA了, 拿來做飯後閒餘時的興趣研究,真的可以打發不少時間..
2010年7月8日 星期四
RDLC 匯出PDF中文問題
同事給了一個在windows 2003 IIS6 rdlc 匯出的pdf檔
在windows 7 的環境下開啟....中文字全部都變成了亂碼.
以前遇到的亂碼通常都是字型未設成細明體(MingLiU)所致
但這次的狀況倒還是第一次遇到. 而且只有細明體才會有這個問題,設成標楷體的rdlc匯出時,看來正常.
後來也反向測試了一下, windows 7 IIS7 rdlc匯出的pdf檔, 拿到windows 2003 或xp 也都會變成亂碼
如果用acrobat 5.0開啟時還會有"無法找到或建立字型『MingLiU』‧某些字元法正確顯示或列印"的訊息出現, 用acrobat 9.3 則無此提示訊息.
大家反覆測了一整天, GOOGLE了半會,也沒啥solution...
今天就反應給微軟, 且待結果囉..
2010/07/14: 微軟回覆說.....這是已知的BUG, 在VS2010已解決, 建議改用VS2010.... 或等待VS2008的BUG FIX
測了一下, VS2010的RDLC, 部署到win2003 IIS 6或win7 IIS7環境,所匯出的PDF在win2003,xp,win7細明體中文皆可正常顯示.
唉, vs2008沒用多久,馬上又進入vs2010了, 技術更新的周期愈來愈短, 我跑得愈來愈慢...哈.
2010/07/15, 微軟說, 這是已知BUG, 細明體glyph ID在win 7已和之前不相同,所以會有對照上的問題, 但標楷體的glyph ID在win 7則維持不變, 所以要嗎上vs2010,要嗎改用標楷體.....vs2008會不會在下版sp fix bug? 可能不會吧......結案.
最後的解決方法是, 安裝virtual pdf printer, 用列印的方式轉出PDF檔, 這樣連之前造字無法正常顯示的問題也一併解決.
2010/08/12, 看到路人甲的留言,照著這篇文章的說明,
1.先去下載Microsoft Report Viewer 2010 Redistributable Package
2.在dos command下, cd c:\Windows\assembly\GAC_MSIL\Microsoft.ReportViewer.WebForms\10.0.*
3.copy Microsoft.ReportViewer.WebForms.dll c:\temp\
4. cd c:\Windows\assembly\GAC_MSIL\Microsoft.ReportViewer.Common\10.0*
5.copy Microsoft.ReportViewer.Common.dll c:\temp\
6.open your web project, add refreance 上述二個dll檔
7.接著, 連程式碼都不用改喔, 只要在web.config檔置換下列幾個設置,然後重新build project
system.web 下的assemblies tag, 找到add assembly="Microsoft.ReportViewer.WebForms, Version=9.0.0.0,.....及add assembly="Microsoft.ReportViewer.Common, Version=9.0.0.0
system.web 下的pages tag下的controls tag, 找到add assembly="Microsoft.ReportViewer.WebForms, Version=9.0.0.0
system.web 下的httpHandlers tag,找到add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0,....
以上都把9.0.0.0改成10.0.0.0
system.web 下的buildProviders tag, 找到 add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.Common, Version=9.0.0.0, ...
移除掉這行
如果是要部署到IIS7.0,
在system.webServer 下的handlers tag, 找到add name="Reserved-ReportViewerWebControl-axd" path="Reserved.ReportViewerWebControl.axd" precondition="integratedMode" resourcetype="Unspecified" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" verb="*"
把這行改成
add name="ReportViewerWebControlHandler" path="Reserved.ReportViewerWebControl.axd" precondition="integratedMode" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" verb="*"
8.測試一下你的報表囉......
原則上如果原本的rdlc是在SSRS 2005 base下開發, reportviewer 10.0也可以很順利的呈現,同時仍可以vs2008的report designer 進行設計
同時,我也順便測了一下, 用SSRS 2008 先設計出.rdl的報表(主要是有tablix), 然後放到vs2008的專案中,把副檔名改成.rdlc,一樣也可以正常的呈現.(我喜歡用這種方法來設計rdl,一旦報表完成後,只要把.rdl改成.rdlc就可以了, 很方便進行報表的開發及測試)
比較美中不足的是, 在vs2008的report designer中,無法順利開啟SSRS 2008 base的rdlc檔
不知vs2008上的report designer是否也能夠使用10.0的版本?
總之, 路人提供的解決方法, 真是太棒了, 真是一舉二得. 解決了之前PDF的問題, 又可使用SSRS 2008的報表新功能.
在windows 7 的環境下開啟....中文字全部都變成了亂碼.
以前遇到的亂碼通常都是字型未設成細明體(MingLiU)所致
但這次的狀況倒還是第一次遇到. 而且只有細明體才會有這個問題,設成標楷體的rdlc匯出時,看來正常.
後來也反向測試了一下, windows 7 IIS7 rdlc匯出的pdf檔, 拿到windows 2003 或xp 也都會變成亂碼
如果用acrobat 5.0開啟時還會有"無法找到或建立字型『MingLiU』‧某些字元法正確顯示或列印"的訊息出現, 用acrobat 9.3 則無此提示訊息.
大家反覆測了一整天, GOOGLE了半會,也沒啥solution...
今天就反應給微軟, 且待結果囉..
2010/07/14: 微軟回覆說.....這是已知的BUG, 在VS2010已解決, 建議改用VS2010.... 或等待VS2008的BUG FIX
測了一下, VS2010的RDLC, 部署到win2003 IIS 6或win7 IIS7環境,所匯出的PDF在win2003,xp,win7細明體中文皆可正常顯示.
唉, vs2008沒用多久,馬上又進入vs2010了, 技術更新的周期愈來愈短, 我跑得愈來愈慢...哈.
2010/07/15, 微軟說, 這是已知BUG, 細明體glyph ID在win 7已和之前不相同,所以會有對照上的問題, 但標楷體的glyph ID在win 7則維持不變, 所以要嗎上vs2010,要嗎改用標楷體.....vs2008會不會在下版sp fix bug? 可能不會吧......結案.
最後的解決方法是, 安裝virtual pdf printer, 用列印的方式轉出PDF檔, 這樣連之前造字無法正常顯示的問題也一併解決.
2010/08/12, 看到路人甲的留言,照著這篇文章的說明,
1.先去下載Microsoft Report Viewer 2010 Redistributable Package
2.在dos command下, cd c:\Windows\assembly\GAC_MSIL\Microsoft.ReportViewer.WebForms\10.0.*
3.copy Microsoft.ReportViewer.WebForms.dll c:\temp\
4. cd c:\Windows\assembly\GAC_MSIL\Microsoft.ReportViewer.Common\10.0*
5.copy Microsoft.ReportViewer.Common.dll c:\temp\
6.open your web project, add refreance 上述二個dll檔
7.接著, 連程式碼都不用改喔, 只要在web.config檔置換下列幾個設置,然後重新build project
system.web 下的assemblies tag, 找到add assembly="Microsoft.ReportViewer.WebForms, Version=9.0.0.0,.....及add assembly="Microsoft.ReportViewer.Common, Version=9.0.0.0
system.web 下的pages tag下的controls tag, 找到add assembly="Microsoft.ReportViewer.WebForms, Version=9.0.0.0
system.web 下的httpHandlers tag,找到add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0,....
以上都把9.0.0.0改成10.0.0.0
system.web 下的buildProviders tag, 找到 add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.Common, Version=9.0.0.0, ...
移除掉這行
如果是要部署到IIS7.0,
在system.webServer 下的handlers tag, 找到add name="Reserved-ReportViewerWebControl-axd" path="Reserved.ReportViewerWebControl.axd" precondition="integratedMode" resourcetype="Unspecified" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" verb="*"
把這行改成
add name="ReportViewerWebControlHandler" path="Reserved.ReportViewerWebControl.axd" precondition="integratedMode" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" verb="*"
8.測試一下你的報表囉......
原則上如果原本的rdlc是在SSRS 2005 base下開發, reportviewer 10.0也可以很順利的呈現,同時仍可以vs2008的report designer 進行設計
同時,我也順便測了一下, 用SSRS 2008 先設計出.rdl的報表(主要是有tablix), 然後放到vs2008的專案中,把副檔名改成.rdlc,一樣也可以正常的呈現.(我喜歡用這種方法來設計rdl,一旦報表完成後,只要把.rdl改成.rdlc就可以了, 很方便進行報表的開發及測試)
比較美中不足的是, 在vs2008的report designer中,無法順利開啟SSRS 2008 base的rdlc檔
不知vs2008上的report designer是否也能夠使用10.0的版本?
總之, 路人提供的解決方法, 真是太棒了, 真是一舉二得. 解決了之前PDF的問題, 又可使用SSRS 2008的報表新功能.
2010年7月5日 星期一
Dos Command , DIR
想要整理出專案中某一時間後有異動過的 .cs和.aspx檔清單.
不知道windows 7有沒有這個功能. 只好先用一點撇步.
先打開winrar, 在時間頁籤下,有個選項叫 要處理的檔案, 在包含時間選擇修改時間晚於...
把某段時間後的檔案找出來壓縮成 .rar
接著解壓縮到一個新的目錄, 利用 dos command
如此.就可以快速產出含目錄說明及包含檔案數的異動程式清單了
如果不想要包含目錄結構可以下
dir /S / B *.cs *.aspx > a.txt
這樣就只會列出包含完整路徑的清單 了
解了燃眉之急
不知道windows 7有沒有這個功能. 只好先用一點撇步.
先打開winrar, 在時間頁籤下,有個選項叫 要處理的檔案, 在包含時間選擇修改時間晚於...
把某段時間後的檔案找出來壓縮成 .rar
接著解壓縮到一個新的目錄, 利用 dos command
dir /S *.cs *.aspx > a.txt
如此.就可以快速產出含目錄說明及包含檔案數的異動程式清單了
如果不想要包含目錄結構可以下
dir /S / B *.cs *.aspx > a.txt
這樣就只會列出包含完整路徑的清單 了
解了燃眉之急
錢就是要這樣流通
轉貼....朋友寄來的MAIL.... 真有意思...
太陽高掛,街道無人,時機歹歹,每個人都債臺高築,靠信用度日。
這天,從外地來了一位有錢的旅客,正開車通過鎮上。他在一家汽車旅館前停車,進去後,拿出一張 1000 元鈔票放在櫃台,說他想先看看樓上的房間,挑一間合適的過夜。
就在該名先生上樓的時候,店主抓了這張 1000 元鈔,跑到隔壁屠戶那裡付了他欠的錢。屠夫有了 1000 元,橫過馬路付清了欠豬農的錢。
豬農拿了 1000 元,奔向飼料和燃料供應商,也付清了他欠的錢。那個在農會做事的老兄,拿到 1000 元,趕忙去付清他召妓的錢(經濟不景氣的時候,當地的服務業也不得不提供信用服務)。有了 1000 元,這名妓女衝到旅館付了她所欠的房間錢。旅館店主把這 1000 元放到櫃檯上,以免旅客下樓時起疑。
此時這位旅客下樓來,拿起 1000 元鈔票,聲稱客房沒一間滿意的,他把錢收回,塞進口袋,走了。
這一天,表面看起來,沒有人生產了什麼東西,也沒有人得到任何東西。但是現在全鎮的債務都清了,而且以更樂觀的態度面對未來。
各位女士先生們,錢就是要這樣流通。
太陽高掛,街道無人,時機歹歹,每個人都債臺高築,靠信用度日。
這天,從外地來了一位有錢的旅客,正開車通過鎮上。他在一家汽車旅館前停車,進去後,拿出一張 1000 元鈔票放在櫃台,說他想先看看樓上的房間,挑一間合適的過夜。
就在該名先生上樓的時候,店主抓了這張 1000 元鈔,跑到隔壁屠戶那裡付了他欠的錢。屠夫有了 1000 元,橫過馬路付清了欠豬農的錢。
豬農拿了 1000 元,奔向飼料和燃料供應商,也付清了他欠的錢。那個在農會做事的老兄,拿到 1000 元,趕忙去付清他召妓的錢(經濟不景氣的時候,當地的服務業也不得不提供信用服務)。有了 1000 元,這名妓女衝到旅館付了她所欠的房間錢。旅館店主把這 1000 元放到櫃檯上,以免旅客下樓時起疑。
此時這位旅客下樓來,拿起 1000 元鈔票,聲稱客房沒一間滿意的,他把錢收回,塞進口袋,走了。
這一天,表面看起來,沒有人生產了什麼東西,也沒有人得到任何東西。但是現在全鎮的債務都清了,而且以更樂觀的態度面對未來。
各位女士先生們,錢就是要這樣流通。
訂閱:
文章 (Atom)
VS CODE離線安裝套件方式-續
去年 vscode離線安裝 powershell nupkg 今年在一台無外網的 windwos 2025上安裝時遇到了powershell版本一直讀取到了5.1的版本,鬼打牆了一下午,在VM還原重測測了好幾回,應該是可行了。 將下載到的免安裝powershell 解壓縮到...
-
一個老舊的aspx web form專案,調了一些功能建置成功,但進行部署時顯示以下錯誤。 在應用程式層級之外使用註冊為 allowDefinition='MachineToApplication' 的區段發生錯誤。錯誤的原因可能是虛擬目錄尚未在 IIS 中設定為...
-
freeFTPd是套免費的SFTP SERVER支援22 port SFTP及21port FTP,一般找到免費的都不支援SFTP只有技援FTPS。 之前一直有個困擾在幾台主機安裝後,有幾台重開機後,SFTP SERVER必須手動去啟動,一直以來老是搞不懂為什麼,今天看到一篇文...
-
Row.Cells[2].Text == "abc" ? "ok" : "not ok" ; 或加入Microsoft. VisualBasic 參考使用 vb namespace using Microsoft...
