文章

SQL Server -使用資料層應用程式匯出/匯入

圖片
前言 前陣子將自己寫的一個Side Project的資料庫放在網路上的 免費空間 ,這兩天想要把資料備份下來。網站有提供Export Data,但我試了沒用。使用.bak的方式備份,檔案會備份在免費空間的主機上,無法下載...昏。 解決方式 之前記得同事有提過,資料庫在SSMS使用 bacpac 進行備份/還原。試了一下果然可以,備份的檔案可以直接存在用戶端的電腦上。 匯出 1.匯出資料層應用程式 2.選擇本地位置 下一步確認後,會完整將Schema及資料匯出。 匯入 選擇匯出後的資料層應用程式 指定資料庫名稱及位置 確認後,資料庫匯入成功 參考連結 https://docs.microsoft.com/zh-tw/sql/relational-databases/data-tier-applications/import-a-bacpac-file-to-create-a-new-user-database?view=sql-server-ver15

Jenkins-無法儲存工作設定

圖片
問題 同事回報CI工作發行錯誤,原因為建置參數遺失...。此工作只有在昨天Jenkins更新到2.69後,修改了Pipeline的語法而已,查詢工作設定後,發現原本的參數設定不見了....變成未設定的狀態. 測試其他如trigger build等其他的設定,儲存後也都會不見....昏 除錯過程 本以為是Jenkins 2.69更新的問題,所以就先 回報議題 ,過了一天收到了回覆,開發人員使用相關環境測試,是沒問題的....。 為確定是否為Java runtime或是環境等問題,我重新安裝最新的及舊版Jeknins,測試結果正常 將主機的Jenkins還原到我本機來測試後, 問題一樣存在 .....。 在確定與主機環境一致後,再比對兩邊的檔案後,差異的只有Plugin,所以我先將測試正常的Plugin替換到目前有問題的Jenkins下,果然一測試就正常了....。 ps:此目錄只需要copy .jpi就可以使用了 解決方式 在經由交叉比對、連番測試差異的plugin,終於找到了問題所在,一枚六年前安裝,目前已停止維護的 TFS Plugin 造成的。在Jenkins 更新至2.64之後,此Plugin會影響Jenkins的工作設定。 目前的版控已全部改成git,所以將它移除後,恢復正常。

git 修改歷史訊息

圖片
前言     之前同事有問,如何修改commit的訊息? 當下不會,所以只好使用其他非正統方式處理....。這次換自己有此需求,順便將此技能修成。 如何修改 有2種情況,需使用不同的方式修改。 1.要修改的訊息為最新的一筆commit 使用--amend 修改 git commit --amend -m "third by amend" 修改後,commit 的ID會重新計算一個新的 2.修改歷史記錄的某一筆。 本例:修改紅框的seond2,綠色指標為待會 rebase的 Commit ID git rebase -i 4e1d5be 執行後會跳出Vim 編輯器畫面,將第一行的pick改成reword (修改訊息的命令)    儲存後,關閉會再跳出另一個Vim 編輯器畫面,此時就可以直接修改你要的訊息了,紅框為我本次加入的 再次查看,結果如下 3.修改第一筆commit (init) 第2點的命令無法修改init的commit,只能修改在它之後的commit。解決如下命令,其他動作一樣。 git rebase --onto HEAD HEAD master 其它參考 修改 Commit 紀錄 修改歷史訊息

C# MongoDb基本操作

圖片
前言    公司的資料庫,部份資料表過大,造成查詢效能低落。目前考慮要將較大的資料表及較不重要的Log檔,搬到MongoDB上,來解決效能瓶頸。 安裝 Mongodb Windows 4.4.1 MongoDB Database Tools 資料庫管理工具,用來執行備份、還原。 下載後,將相關exe放到安裝目錄內。 Nuget C# MongoDB Driver  : Install-Package mongocsharpdriver -Version 2.11.4 C# 新增、讀取、更新、刪除 (CRUD) 操作 安裝套件 Install-Package mongocsharpdriver -Version 2.11.4 初始化        private static void Init()         {             string connectionString = "mongodb://localhost"; // MongoDB 連線字串             _mongoClient = new MongoClient(connectionString);// 產生 MongoClient  物件             _mongoDatabase = _mongoClient.GetDatabase("Demo");// 取得  MongoDatabase 物件             _mongoCollectionProduct =  _mongoDatabase.GetCollection<Product>("Product"); // 取得 Collection(可以視為資料表)         } ps:資料庫及Collection可以不用事先建立,寫入時不存在,會自動建立。 新增         private static void Insert()         {             var products = Product.GetTestData();             _mongoCollectionProduct.InsertMany(products);//寫入多筆             var single =

Azure Pipeline - 自動新增版號

圖片
前言 前一篇文章" 建置組件加上自訂版號 "的後半段提到,使用BuildId實作了版號自動新增,如下圖。 name: v1.0.$( Build.BuildId ) ($(SourceBranchName)) ...     msbuildArgs: '/p:Configuration=release /p:AssemblyVersionNumber=$(versionNumber)' 但這個方式有一個問題是,BuildId是跟著整個Project走,Project內所有的Pipeline會共用此ID,所以下次取得是版號可能會跳號,例:1.0.213 變 1.0.219。 另外一個問題,BuildId只會一直累加,所以建置次變多了,數字會變得很奇怪,若Minor版號進版也無法重置。例如:1.0.5999、1.1.6000。 解決方式 使用 內建函式counter ,參數是第一個Key值,第二個回傳的預設值,每次叫用會依Key值,回傳一個自動加1的數字,例如:Key=1.0.0,第一次呼叫得到0,第二次呼叫得到1。 $[counter('1.0', 0)] 結合變數的使用,versionNumber變數,會得到1.0.0、1.0.1、1.0.2 以此類推....。若Minor進版的話(1.1),則counter會重算,變成1.1.0、1.1.1... variables:   version.MajorMinor: '1.0'    version.Revision: $[counter(variables['version.MajorMinor'] , 0)]    versionNumber : '$(version.MajorMinor).$(version.Revision)' 修改建置工作名稱 解決了版號問題,但產生了另一個問題! 建置工作的名稱,無法使用函式。 name: v1.0.$(Build.BuildId) ($(SourceBranchName))  $[counter('1.2', 0)] 名稱變成如下紅框,這樣建置工作無法跟發行的組件對應起來.....所以得另外使用其他方式解決此問題。 解決方式 使用PowerShell在建置執

建置組件加上自訂版號

圖片
前言 目前的專案,組件版號,預設是自動新增,設定在 AssemblyInfo.cs ,例:1.0.* ,建置後 1.0 .7613.6859 ,後方 粗體字為*號 ,自動編的結果。 日前,同事問道,可以在建置時,不修改程式下,設定一組自訂的版號嗎?  呃.....沒做過,搜尋相關文章後,Nuget有一套件 MSBuild.AssemblyVersion ,可以解決此需求。 實作 1.安裝套件 Install-Package MSBuild.AssemblyVersion  2.MsBuild設定版本參數AssemblyVersionNumber cd  C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin .\msbuild.exe "D:\VSO\Kim\Lab Projects\AzureArtifactsLab\AzureArtifactsLab\AzureArtifactsLab.csproj"  -t:rebuild /p:AssemblyVersionNumber=1.0.25 建置結果 結合CI 建置 將版號設定為自動增加,並設定在每次建置的標題及組件上。本例的環境為Azure Pipeline,使用BuildId當作Major的流水號 #設定建置名稱 name: v1.0. $(Build.BuildId) ($(SourceBranchName)) #建置工作,設定版號 - task: VSBuild@1   displayName: 'Build'   inputs:     solution: '$(solution)'     msbuildArgs: '/p:Configuration=release /p:AssemblyVersionNumber=1.0. $(Build.BuildId) '     platform: '$(buildPlatform)'     configuration: '$(buildConfiguration)' 建置結果 建置工作名稱加上流水號 版號跟建置工作,保持一致 其它參考 https:/

Blogger重新導向網域錯誤

圖片
問題 N年前的設定" 重新導向網域 ",不知怎麼地,好像跳掉了,還是我有改到..(謎),今天想要啟用時,一直出現訊息"您 尚未獲得授權,無法使用這個網域。請按照設定操作說明進行。 ",所有DNS相關設定都設了,但依舊無法啟用。 解決方式 在試到沒方法下,索性把自訂網域 刪掉後,再加回去 .....................就可以 啟用 了.......昏倒。 ps: 重新加入後,Https 需要重新啟用,並等待個20分才會生效。 其它參考 https://support.google.com/blogger/answer/1233387?hl=zh-Hant&ref_topic=6321959

Windows Terminal窗格操作

圖片
看了Scott介紹Windows Terminal窗格操作後,順手玩了一下,相關指令。 開新的分割窗格 垂直分割 : alt+shift+加號 水平分割 : alt+shift+減號 窗格之間切換 alt 上下左右 調整窗格大小 alt+shift+上下左右 關閉窗格 ctrl +shift+w 參考連結 https://www.hanselman.com/blog/HowToUseOpenResizeAndSplitPanesInTheWindowsTerminal.aspx https://docs.microsoft.com/zh-tw/windows/terminal/panes?WT.mc_id=-blog-scottha

使用Visual Studio Code 編輯Azure Pipline

圖片
問題 Azure Pipelines 在網頁上編輯,雖然提供了提示、Task UI輸入方式,但編輯時,卻總覺得不是很方便。例如:輸入法不小心切到中文,會有亂碼問題。 由於yaml的語法嚴謹性,換行,縮排、空格要排好,不然會直接報錯。而換行、複製/貼上時,縮排常會跑掉,所以又要一直調整......=.=。 解決方法 使用Visual Studio Code編輯YML,支援排版、語法提示等。 1.安裝extension: Azure Pipeline 2.設定Azure Pipeline與 *.yml的檔案關聯, 進入 Command Palette,輸入Change Language Mode  針對*.yml設定為Azure Pipelines     設定完成 編輯時會出現相闗提示 其它/參考 Visual Studio Code 編輯Azure DevOps Pipeline的YAML 這裡有教到如何連接Azure Piple直接建立檔案,但我沒試成功,只有用編輯器提示功能。

Jenkins無法更新版本

圖片
問題 公司有2台CI Server,一台正式區,一台測試區, 從上星期開始,測試區主機一直無法更新,另一台正式區的卻可以。一開始以為是地理環境,連的Jenkins Update Center不同,才會有此情形,所以放先不管它。 這兩天再次執行更新,仍然會出現錯誤,訊息如下,找不到憑證。 sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at sun.security.provider.certpath.SunCertPathBuilder.build(Unknown Source) at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source) at java.security.cert.CertPathBuilder.build(Unknown Source) Caused: sun.security.validator.ValidatorException: PKIX path building failed at sun.security.validator.PKIXValidator.doBuild(Unknown Source) at sun.security.validator.PKIXValidator.engineValidate(Unknown Source) at sun.security.validator.Validator.validate(Unknown Source) at sun.security.ssl.X509TrustManagerImpl.validate(Unknown Source) at sun.security.ssl.X509TrustManagerImpl.checkTrusted(Unknown Source) at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source) .... 原因 一開始搜尋時,找到