sql server 2014前的版本的bcp 不支援匯出utf-8格式。
但sql server 2016的bcp則已有支援,以下是MSDN上的說明
13 版之前的版本 (SQL Server 2016) 不支援字碼頁 65001 (UTF-8 編碼)。 開頭為 13 的版本可以將 UTF-8 編碼匯入舊版的 SQL Server。
測了一下,DB仍是用SQL 2014,然後去下載sql 2016的odbc driver 13及command line utilities 13,可轉出UTF-8格式資料。
Microsoft® ODBC Driver 13
(Preview) for SQL Server® – Windows
Microsoft® Command Line Utilities 13 for SQL Server®
安裝後,使用C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\下的bcp 來進行資料轉出,如不確定bcp版本,可執行
bcp -v
最後指定code page完成UFT-8檔的轉出囉.
"C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\bcp" "exec zspTest 123" queryout "c:\temp\test.csv" -cC65001 -T -StestServer
2016年7月7日 星期四
2016年7月2日 星期六
informix Routine (equal) can not be resolved
使用TSQL慣了,再來寫其他資料庫的SQL時都覺得好痛苦。
尤其是寫INFORMIX的STORED PROCEDURE,更是覺得自已的效率好低。
因為不習慣在VI下編輯(足以證明我年紀還沒老到那個TERMINAL MODE的年代...),所以通常都是用NOTEPAD++寫好,再貼到VI下執行dbaccess(其實是VI不太會用啦...)
今天寫了一個漏漏長的SP,執行後一直有個錯誤
informix Routine (equal) can not be resolved
搞啥啊,找了半天根本也沒有一個叫equal的函數,用debug file方式下trace,才發現原來有一段SQL做了二個欄位的比較,回傳boolean的型態,結果我用了數值0/1來判斷造成的錯誤。(應該要用 variablename = 'T' 或 variablename = 'F'來判斷)
這訊息也太不直覺了吧。
每次寫完一個SP,都有點昏的感覺。
尤其是寫INFORMIX的STORED PROCEDURE,更是覺得自已的效率好低。
因為不習慣在VI下編輯(足以證明我年紀還沒老到那個TERMINAL MODE的年代...),所以通常都是用NOTEPAD++寫好,再貼到VI下執行dbaccess(其實是VI不太會用啦...)
今天寫了一個漏漏長的SP,執行後一直有個錯誤
informix Routine (equal) can not be resolved
搞啥啊,找了半天根本也沒有一個叫equal的函數,用debug file方式下trace,才發現原來有一段SQL做了二個欄位的比較,回傳boolean的型態,結果我用了數值0/1來判斷造成的錯誤。(應該要用 variablename = 'T' 或 variablename = 'F'來判斷)
這訊息也太不直覺了吧。
每次寫完一個SP,都有點昏的感覺。
2016年5月20日 星期五
ASP.MVC dropdownlistfor selected not binding
使用ViewBag方式進行前端VIEW的下拉選單binding。
其中有個欄位的下拉選單一直無法顯示正確的值。
測了半個小時,看到這一篇,才猛然想到....這個問題以前同事講過啊....
http://stackoverflow.com/questions/2278056/dropdownlistfor-not-selecting-value
總之ViewBag的名稱不要取得和欄位名稱一樣,MVC會發瘋的。
其中有個欄位的下拉選單一直無法顯示正確的值。
測了半個小時,看到這一篇,才猛然想到....這個問題以前同事講過啊....
http://stackoverflow.com/questions/2278056/dropdownlistfor-not-selecting-value
總之ViewBag的名稱不要取得和欄位名稱一樣,MVC會發瘋的。
2016年4月8日 星期五
SQLServer備份與還原
有錢做備份很好,花錢買軟體,OP還會幫你還原。
沒錢做備份也好,花心血練習,以後還到事就【大丈夫】 囉。
只有一台SQL SERVER主機,這樣設計
每天做一次資料庫完整備份,並複製到另一台主機做檔案備份 。
每天每30分鐘做一次交易備份, 並複製到另一台主機做檔案備份 。
機器掛掉時 ,找一台相同版本DB的主機,把最後一次完整DB備份還原,依序將交易日誌還原,運氣好的話,RPO ( Recovery Point Objective )可忍受資料遺失的時間長度為30分鐘或1小時。
就看系統重不重要,急迫性如何了。
備份指令
還原指令
沒錢做備份也好,花心血練習,以後還到事就【大丈夫】 囉。
只有一台SQL SERVER主機,這樣設計
每天做一次資料庫完整備份,並複製到另一台主機做檔案備份 。
每天每30分鐘做一次交易備份, 並複製到另一台主機做檔案備份 。
機器掛掉時 ,找一台相同版本DB的主機,把最後一次完整DB備份還原,依序將交易日誌還原,運氣好的話,RPO ( Recovery Point Objective )可忍受資料遺失的時間長度為30分鐘或1小時。
就看系統重不重要,急迫性如何了。
備份指令
use master
go
--step 1: 每天完整的備份資料
declare @fileName = 'MyDB_' + right( '00'+ cast(datepart(day,getdate()) as nvarchar(10)),2) +'.bak'
BACKUP DATABASE MyDB TO DISK = @fileName
WITH COMPRESSION ,NOFORMAT, INIT, NAME = N'完整 資料庫 備份', SKIP, NOREWIND, NOUNLOAD, STATS = 10
--step 2:每天完整備份後的第一次LOG備份要為INIT, 且LOG命名固定
declare @logname nvarchar(50)
set @logname =(select 'D:\DBLog\MyDB_'+ convert(char(8),getdate(),112)+'_first.TRN')
BACKUP LOG MyDB TO DISK = @logname WITH COMPRESSION,INIT
GO
--step 3:每小時備份LOG
set @logname =(select 'D:\DBLog\MyDB_'+ convert(char(8),getdate(),112)+'_'+ right('00'+cast(datepart(hour,getdate()) as nvarchar(4)),2) +
case when datepart(minute,getdate()) <=30 then '00' else '30' end +'.TRN')
BACKUP LOG MyDB TO DISK = @logname WITH COMPRESSION
GO
go
--step 1: 每天完整的備份資料
declare @fileName = 'MyDB_' + right( '00'+ cast(datepart(day,getdate()) as nvarchar(10)),2) +'.bak'
BACKUP DATABASE MyDB TO DISK = @fileName
WITH COMPRESSION ,NOFORMAT, INIT, NAME = N'完整 資料庫 備份', SKIP, NOREWIND, NOUNLOAD, STATS = 10
--step 2:每天完整備份後的第一次LOG備份要為INIT, 且LOG命名固定
declare @logname nvarchar(50)
set @logname =(select 'D:\DBLog\MyDB_'+ convert(char(8),getdate(),112)+'_first.TRN')
BACKUP LOG MyDB TO DISK = @logname WITH COMPRESSION,INIT
GO
--step 3:每小時備份LOG
set @logname =(select 'D:\DBLog\MyDB_'+ convert(char(8),getdate(),112)+'_'+ right('00'+cast(datepart(hour,getdate()) as nvarchar(4)),2) +
case when datepart(minute,getdate()) <=30 then '00' else '30' end +'.TRN')
BACKUP LOG MyDB TO DISK = @logname WITH COMPRESSION
GO
還原指令
--獨佔
ALTER DATABASE MyDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE
go
--Restore到上一個完整的備份
RESTORE DATABASE MyDB FROM DISK = 'C:\temp\DB\MyDB_07.BAK' WITH NORECOVERY, REPLACE
GO
--依序還原前一日完整DB備份後的第一個TRN檔,以WITH NORECOVERY 才可逐檔還原
RESTORE LOG MyDB FROM DISK = 'C:\temp\Log\MyDB_20160407_first.TRN' WITH NORECOVERY
GO
--產出LOG還原指令
declare @stm datetime,@etm datetime,@tm datetime,@sql nvarchar(200)
set @stm='2016/04/07 22:00:00'
set @etm = '20104/08 19:00:00'
while @stm <= @etm
begin
set @sql =(select 'RESTORE LOG MyDB FROM DISK = ''C:\temp\Log\MyDB_' +
convert(char(8),@stm,112)+'_'+ right('00'+cast(datepart(hour,@stm) as nvarchar(4)),2) +
right('00'+ cast(datepart(minute,@stm) as nvarchar(4)) ,2) +'.TRN'' WITH NORECOVERY ;' )
set @stm = dateadd(minute,30,@stm)
exec sp_executesql @sql
end
--最後強制回復
RESTORE DATABASE MyDB WITH RECOVERY,REPLACE
--切為多人模式
ALTER DATABASE MyDB SET MULTI_USER WITH ROLLBACK IMMEDIATE
go
ALTER DATABASE MyDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE
go
--Restore到上一個完整的備份
RESTORE DATABASE MyDB FROM DISK = 'C:\temp\DB\MyDB_07.BAK' WITH NORECOVERY, REPLACE
GO
--依序還原前一日完整DB備份後的第一個TRN檔,以WITH NORECOVERY 才可逐檔還原
RESTORE LOG MyDB FROM DISK = 'C:\temp\Log\MyDB_20160407_first.TRN' WITH NORECOVERY
GO
--產出LOG還原指令
declare @stm datetime,@etm datetime,@tm datetime,@sql nvarchar(200)
set @stm='2016/04/07 22:00:00'
set @etm = '20104/08 19:00:00'
while @stm <= @etm
begin
set @sql =(select 'RESTORE LOG MyDB FROM DISK = ''C:\temp\Log\MyDB_' +
convert(char(8),@stm,112)+'_'+ right('00'+cast(datepart(hour,@stm) as nvarchar(4)),2) +
right('00'+ cast(datepart(minute,@stm) as nvarchar(4)) ,2) +'.TRN'' WITH NORECOVERY ;' )
set @stm = dateadd(minute,30,@stm)
exec sp_executesql @sql
end
--最後強制回復
RESTORE DATABASE MyDB WITH RECOVERY,REPLACE
--切為多人模式
ALTER DATABASE MyDB SET MULTI_USER WITH ROLLBACK IMMEDIATE
go
2016年4月7日 星期四
RDLC匯出PDF無法正確顯示中文問題
人客反應,RDLC上的一張表,畫面上預覽中文都很正常,但匯出成PDF後,有一個中文字變成口了。
咦,這似曾相似的中文問題
看來狀況不同,因為這個中文字不是自造字,字型也都設了細明體/標楷體,畫面上預覽也很正常,但匯出PDF就變成細細長長的四方框了。但奇妙的是把rdlc換回rdl在report designer上預覽及匯出也都很正常。
確認後,這個字原來是第二字面的中文字,輸入法中得要勾選包中日韓統一的表文字擴充A與擴充B,才能選得到這些字,難怪大家手忙腳亂的用了注音、速成、倉頡輸入法都找不到這個字。
經過幾天胡測亂測,最後竟然發現解決的方法,跟似曾相識的中文問題解法一樣。
網站是用vs2013開發,當初web.config參考是用Microsoft.ReportViewer.WebForms是11.0版本,那天心血來潮,下載了report viewer runtime 2015 ,把report viewer版本的換成12.0的版本。
結果匯出來的PDF中文竟然顯示正常了。
歡呼。
web.conifg,在<system.web> <assemblies> 下 ,
<add assembly="Microsoft.ReportViewer.WebForms, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
<add assembly="Microsoft.ReportViewer.Common, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
<system.webServer> <handlers>下,
<add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
咦,這似曾相似的中文問題
看來狀況不同,因為這個中文字不是自造字,字型也都設了細明體/標楷體,畫面上預覽也很正常,但匯出PDF就變成細細長長的四方框了。但奇妙的是把rdlc換回rdl在report designer上預覽及匯出也都很正常。
確認後,這個字原來是第二字面的中文字,輸入法中得要勾選包中日韓統一的表文字擴充A與擴充B,才能選得到這些字,難怪大家手忙腳亂的用了注音、速成、倉頡輸入法都找不到這個字。
經過幾天胡測亂測,最後竟然發現解決的方法,跟似曾相識的中文問題解法一樣。
網站是用vs2013開發,當初web.config參考是用Microsoft.ReportViewer.WebForms是11.0版本,那天心血來潮,下載了report viewer runtime 2015 ,把report viewer版本的換成12.0的版本。
結果匯出來的PDF中文竟然顯示正常了。
歡呼。
web.conifg,在<system.web> <assemblies> 下 ,
<add assembly="Microsoft.ReportViewer.WebForms, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
<add assembly="Microsoft.ReportViewer.Common, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
<system.webServer> <handlers>下,
<add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
2015年11月17日 星期二
VS2015 部署問題 BC30456: 'InitializeCulture'
使用VS2015 publish web app後,部份aspx的程式進入後顯示以下錯誤訊息,
編譯器錯誤訊息: BC30456: 'InitializeCulture' 不是 'ASP.test0200_search_aspx' 的成員。
查看顯示詳細的編譯器輸出資料後,有顯示這麼一段可疑的訊息
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\test\bac62fb0\75a1220a\App_Web_eghhxrxs.0.vb(45) : error BC30560: 'test0200_search' 在命名空間 'menu' 中模稜兩可。 Inherits Global.menu.test0200_search
所以用關鍵字test0200_search進行搜尋後,發現有二個.aspx 有相同的Inherits="menu.test0200_search" %>同時也關連到了code behind .aspx.vb的class名稱,更改為正確的Inherits="menu.test0200_search1" 後,網站執行就正常了。
我想這隻aspx應該是copy and paste修改來的吧。
同時,在這篇討論中 http://forums.asp.net/t/955888.aspx?BC30456+InitializeCulture+is+not+a+member+of+
也提供一個解決方法
During the publishing stage on framework 2.0 uncheck the "allow this precompiled site to be updatable". Once I unchecked this it published correctly and functioned correctly on IIS. With it checked I would always receive 'InitializeCulture' is not a member of ...
試了一下publish web app時,在部署設定選項中不勾選precompiled後網站也是可以正常執行的。
編譯錯誤
描述: 資源編譯無法完成 (錯誤發生於服務要求)。請檢閱下列的特定錯誤詳細資料,並視情況修改您的原始程式碼。編譯器錯誤訊息: BC30456: 'InitializeCulture' 不是 'ASP.test0200_search_aspx' 的成員。
查看顯示詳細的編譯器輸出資料後,有顯示這麼一段可疑的訊息
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\test\bac62fb0\75a1220a\App_Web_eghhxrxs.0.vb(45) : error BC30560: 'test0200_search' 在命名空間 'menu' 中模稜兩可。 Inherits Global.menu.test0200_search
所以用關鍵字test0200_search進行搜尋後,發現有二個.aspx 有相同的Inherits="menu.test0200_search" %>同時也關連到了code behind .aspx.vb的class名稱,更改為正確的Inherits="menu.test0200_search1" 後,網站執行就正常了。
我想這隻aspx應該是copy and paste修改來的吧。
同時,在這篇討論中 http://forums.asp.net/t/955888.aspx?BC30456+InitializeCulture+is+not+a+member+of+
也提供一個解決方法
During the publishing stage on framework 2.0 uncheck the "allow this precompiled site to be updatable". Once I unchecked this it published correctly and functioned correctly on IIS. With it checked I would always receive 'InitializeCulture' is not a member of ...
試了一下publish web app時,在部署設定選項中不勾選precompiled後網站也是可以正常執行的。
2015年10月26日 星期一
SSRS RDL 顯示不出微軟正黑體
同事傳來一個SSRS RDL報表檔,說table的欄位字型設成微軟正黑體後,預覽時,全部都變成了空白的一片。但匯出PDF,報表的字型顯示又都很OK,只有在預覽時不正常。
但將微軟正黑體改成新細明體後,預覽又都變得很正常。
把他的rdl用我的SSDT BI 2013打開來看,預覽了一下,在我的機器上看來都很OK咧。
因同事的REPORT DESIGNER是VS2008的中文版本,在設計報表時,字型的下拉選項是直接可看到微軟正黑體的選項,但我的是VS2013英文版,只有Microsoft JhengHei UI這個選項,但不論我是打微軟正黑體、Microsoft JhengHei或是選Microsoft JhengHei UI,報表預覽都很正常。
後來測了一下,發現只要在VS2008的環境中,把字型輸入改為直接打上Microsoft JhengHei後,神奇的是,報表預覽就一切都正常了。
怪哉!
但將微軟正黑體改成新細明體後,預覽又都變得很正常。
把他的rdl用我的SSDT BI 2013打開來看,預覽了一下,在我的機器上看來都很OK咧。
因同事的REPORT DESIGNER是VS2008的中文版本,在設計報表時,字型的下拉選項是直接可看到微軟正黑體的選項,但我的是VS2013英文版,只有Microsoft JhengHei UI這個選項,但不論我是打微軟正黑體、Microsoft JhengHei或是選Microsoft JhengHei UI,報表預覽都很正常。
後來測了一下,發現只要在VS2008的環境中,把字型輸入改為直接打上Microsoft JhengHei後,神奇的是,報表預覽就一切都正常了。
怪哉!
訂閱:
文章 (Atom)
pdf.js 無法顯示部份字
有個檔案在pdf viewer套件中無法顯示內容,但下載檔案後使用工具又可以正常顯示。 本來以為是套件版本太舊的原因,於是去下載pdf viewer套件 https://github.com/mozilla/pdf.js 更新後還是一樣。 覺得應是字型缺漏的問題,於是用PDF-X...
-
上網找了免費的白箱檢測工具,找到了 puma scan 因為支援OWASP TOP 10的檢測,所以這是一個符合客戶需求又能與Visual studio結合的工具(白話說...交差了事矣....) 更重要的是這不用錢....檢測工具都貴森森的,尤其是源碼檢測工具。 ht...
-
建了一個工作排程,定時執行batch檔。 batch中寫了一段xcopy,主要針對有異動較新檔案時才複製。 echo off for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find...
-
改用SQL Server Management Studio 2017有一段時間了。 在執行一段之前寫的SQL要組出一段語法時,里頭包含了使用CHAR(10)當作換行符號的文字,在輸出結果中,使用複製貼上的方式要進行執行時,發現換行符號都失效了。 但如果使用Results...