2024年8月16日 星期五

ReportViewer 工具列顯示中文

VS專案中要升級舊版的report viewer,已經不用再去安裝runtime,直接以NuGet方式安裝Microsoft.ReportingServices.ReportViewerControl.WebForms  150.1652.0 ,但部署後,工具列都是英文沒有中文。

但在bin下其實有本地化的目錄zh-CHT 所以應該有支援多語系,在bing和google了半天都找不到想要的,覺得這二個搜尋引擎好像愈來愈難找到想要的資訊,是我的錯覺嗎???

後來想到用保哥很推薦的felo search(https://felo.ai/),還真的沒讓我失望耶。

輸入了 Microsoft.ReportingServices.ReportViewerControl.WebForms zh-CHT  詳列了做法。主要是在web.config加入以下設定。

<configuration>

  <system.web>

    <globalization culture="zh-CHT" uiCulture="zh-CHT" />

  </system.web>

</configuration>

將zh-CHT 目錄下的dll加入專案參考後,重新部署,工具列就出現中文了。


2024年8月5日 星期一

SQL AGENT無法啟動 無效的物件名稱 'syssubsystems'

有一天一台SQL 2019 主機安裝CU27後,SQL AGENT無法啟動,查看SQLAGENT.OUT記錄檔錯誤如下

2024-08-06 12:00:08 - ! [298] SQLServer 錯誤: 208,無效的物件名稱 'syssubsystems'。 [SQLSTATE 42S02] (ConnCacheSubsystems)

2024-08-06 12:00:08 - ! [449] 無法列舉子系統 (原因: 無效的物件名稱 'syssubsystems'。 [SQLSTATE 42S02] (錯誤 208))

再安裝CU28也是一樣問題無法啟動。

於是找了另外一台正常的DB查看,確實有syssubsystems這個資料表存在。

直接轉出create語法在有問題的那台DB把資料表建起來,重啟SQL AGENT服務就正常了。

CREATE TABLE [dbo].[syssubsystems](

[subsystem_id] [int] NOT NULL,

[subsystem] [nvarchar](40) NOT NULL,

[description_id] [int] NULL,

[subsystem_dll] [nvarchar](255) NULL,

[agent_exe] [nvarchar](255) NULL,

[start_entry_point] [nvarchar](30) NULL,

[event_entry_point] [nvarchar](30) NULL,

[stop_entry_point] [nvarchar](30) NULL,

[max_worker_threads] [int] NULL

) ON [PRIMARY]

GO

重啟後,這個資料表就會自動長出一些資料。

看了二篇文章似乎都跟msdb有做什麼變動造成的。回想一下為什麼有這個錯,我有改過msdb嗎?? 好像也沒有...

https://www.dbaservices.com.au/the-ssis-subsystem-failed-to-load/

The problem is most likely that the location of your SQL Server installation directory differs from that of the old serve

https://byronhu.wordpress.com/2011/07/04/sql-agent-job-%E6%9A%AB%E5%81%9Csuspend/

因為從原來全部安裝在 C:\ 的 SQL Server 備份 msdb 後,restore 到安裝在 D:\ 的 SQL Server,除要注意 SQL Server 的 Build No 外,若有  Job 呼叫到外部子系統(例如 SSIS、Replication…等),也要一併注意 msdb.dbo.syssubsystems 的設定

二篇都說到執行,但我是連這個資料表都沒有,就直接重建了。
use msdb
go
delete from msdb.dbo.syssubsystems
exec msdb.dbo.sp_verify_subsystems 1
go

2024年7月19日 星期五

SSAS Restore vs Detach & Attach 大資料庫

因為要重裝某台DB 作業系統,但其中有個較大的SSAS OLAP DB,每每備份後再還原到另外一台備援機時,都要三天三夜...三更半夜....然後還不一定成功?

先用一個小DB試著在主機1用Deatch 卸離後,複製OLAP Data目錄下的資料庫資料夾到主機2 OLAP Data目錄下,然後在主機2 Attach掛載起來,看來大大節省時間。

(後來也有試過用mklink做過UNC 目錄的Attach看來也是可以瀏覽,不過沒有做後續process 測試,故也不確定有沒有問題)

就像用資料庫的 Detach  & Attach一樣,用來刪掉重建.ldf檔,不用費力去瘦身ldf檔,快速又方便。,

最後在重安裝的主機上,因只format掉C:\ 故重安裝好SQL SERVER後再由原來的SSAS Data目錄Attach檔案,所以必需開啟其他目錄可讀取Data目錄。

在SSAS 主機按右鍵進入屬性後,於一般下勾選顯示進階,調整AllowedBrowsingFolder,用 | 破折號相隔加入可瀏覽目錄,如下紅字。

G:\OLAP\Backup\|G:\OLAP\Log\|G:\OLAP\Data\|F:\OLAP\Data\


2024年7月4日 星期四

windows中的symbol link mklink /J

 C:\Windows\system32>mklink /?

建立符號連結。

MKLINK [[/D] | [/H] | [/J]] Link Targe

        /D      建立目錄符號連結。預設是檔案符號連結。

        /H      建立永久連結而不是符號連結。

        /J      建立目錄連接。

        Link    指定新符號連結名稱。

        Target  指定新連結參照的路徑 (相對或絕對)。


二台WEB主機,WEB2 IIS建置站台時以WEB1 UNC目錄(\\192.168.0.123\WebSite\) 為來源。

WEB1主站台上,又需要在某功能目錄可連結WEB1其他站台的報表目錄。

利用mklink /J 竟然可達成。(mklink /D (預設) 在web2讀取rpt1 目錄會有錯誤)

mklink /J web1\master\rpt1 web1\sys1\ReportFile

mklink /J web1\master\rpt2 web1\sys2\ReportFile

mklink /J web1\master\rpt3 web1\sys3\ReportFile

不太求甚解...能達成目的就好....

2024年3月22日 星期五

publish error allowDefinition='MachineToApplication'

一個老舊的aspx web form專案,調了一些功能建置成功,但進行部署時顯示以下錯誤。

在應用程式層級之外使用註冊為 allowDefinition='MachineToApplication' 的區段發生錯誤。錯誤的原因可能是虛擬目錄尚未在 IIS 中設定為應用程式。

查了許多文章都說是有重複的web.config存在。

最後直接在專案目錄用搜尋檔案方式找web.config,還真找到了二個,一個在bin\release\ 目錄下,這個目錄也不知如何產出來的,把目錄刪除重部publish後就解決了。

2024年1月1日 星期一

還原DB作業系統錯誤 5(存取被拒。)

 套用GCB後,原本使用UNC方式還原DB時,顯示錯誤訊訊

\\192.168.0.123\dbbackup\ ...作業系統錯誤 5(存取被拒。)

主要是SQL SERVER 服務改用了local system,導致SSMS中要讀取UNC的目錄檔案時無權限。

重設SQL SERVER 服務帳號為本機一組帳號,重啟服務再執行SQL還原。

2023年12月31日 星期日

openrowset excel欄位超過255個字


select * from openrowset('Microsoft.ACE.OLEDB.16.0','Excel 12.0;HDR=YES;IMEX=1;Database=c:\temp\test.xlsx','select * from [sheet1$] ')
如果test.xlsx中欄位內容超過255個字元,則匯入後欄位內容會被截斷。


調整SQL SERVER主機機碼

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Access Connectivity Engine\Engines\Excel

將TypeGuessRows 改為0。

但可能會影響到效能,因為要掃一遍所有資料列以判斷欄位長度。

在使用的經驗上,openrowset會有卡住問題。 

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

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