如何 5 秒內判斷 SQL Server 是否需要更新修正程式才支援 TLS 1.2

情境: 程式連結 SQL Server 時會出現錯誤訊息:     例外類型: SqlException     例外訊息: 與伺服器的連接已成功建立,但在登入程序時發生錯誤。 (provider: SSL Provider, error: 0 – 用戶端和伺服器無法溝通,因為它們沒有公用的演算法。) 判斷方式: SQL Server 2014 SP2 (12.0.5000.0) 或是更新版本即支援 TLS 1.2 , 無需要安裝修正程式. 另外需要安裝修正程式的資訊請參考: https://support.microsoft.com/zh-tw/help/3135244/tls-1-2-support-for-microsoft-sql-server Enjoy. Jacky  

0

使用 lock 取代 MethodImplOptions.Synchronized

情境: ASP.NET 的網站忽然某一個功能會出現 System.Threading.SynchronizationLockException 其它都是正常. 錯誤訊息: System.Threading.SynchronizationLockException: Object synchronization method was called from an unsynchronized block of code. 測試: 測試發現如果使用MethodImplOptions.Synchronized,若thread進入執行並故意abort掉,可以重現.SynchronizationLockException。 若改用lock則不會發生問題 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Runtime.CompilerServices; using System.Text; using System.Windows.Forms; using System.Threading;   namespace LockDemo {     public partial class Form1 : Form     {         public Form1()        …

0

如何 列出 SQL Server 資料庫 的使用者權限

情境: 列出資料庫使用者權限清單 語法: USE <Database Name> GO DECLARE @Obj VARCHAR(4000) DECLARE @T_Obj TABLE (UserName SYSNAME, ObjectName SYSNAME, Permission NVARCHAR(128)) SET @Obj=’ SELECT Us.name AS username, Obj.name AS object,  dp.permission_name AS permission FROM sys.database_permissions dp JOIN sys.sysusers Us ON dp.grantee_principal_id = Us.uid JOIN sys.sysobjects Obj ON dp.major_id = Obj.id ‘ INSERT @T_Obj EXEC sp_MSforeachdb @Obj SELECT…

0

如何 讓 桌面程式的設定檔(exe.config) 加密後, 可以在不同機器執行

情境: 客戶有一個 桌面程式(exe) 的 設定檔(exe.config) 中有連線到資料庫的帳號及密碼, 把它加密保護後, 無法在 Windows Cluster 不同結點(機器) 上移動後正常執行. 如果是在第一個結點做了加密設定, 當 Cluster 移動到第二個結點後, 程式一執行即會出現錯誤, 無法解密連線字串. 做法:  我用一個 .NET 4.0 的 exe 測試步驟如下:  在 Config 檔中的 <configuration> 區段 加入  <configProtectedData >     <providers>         <add name=”ConnectionProvider” type=”System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a” keyContainerName=”connectionKey”/>     </providers>   </configProtectedData> 在 Server 上建立這個 key Container        …

0