簡體   English   中英

Node.js 使用實例名稱、端口和域連接到 SQL 服務器

[英]Node.js connection to SQL Server using instance name, port, and domain

我正在構建一個 Node.js 應用程序,它試圖連接到一個非常具體的 SQL 服務器配置:它作為實例運行,具有自定義端口,用戶需要通過 Active Directory 登錄——因此應該使用域完成連接

我正在使用 mssql package 使用繁瑣的 API,這是我的配置:

connectionOptions = {
    server: 'USRCMX01\\INSTANCE1',
    port: 1367,
    domain: 'stagingsv',
    user: 'x.myuser.01',
    password: 'myuserpassword',
    options: {
        instanceName: 'INSTANCE1',
        trustServerCertificate: true,
        enableArithAbort: true
    }
};

但是,使用此配置時,我從 SQL 服務器收到超時錯誤。 在啟動 SQL 服務器瀏覽器服務並從我的 SQL 服務器實例服務器打開端口 1434 后,我再次嘗試但運氣相同

我之前使用的 SQL 服務器管理工作室的連接字符串如下所示:

Driver={SQL Server Native Client 11.0};Server={USRCMX01\\INSTANCE1,1367};Uid={stagingsv\\x.myuser.01};Pwd={myuserpassword};Trusted_Connection={true};

..它完美無缺

有什么方法可以同時使用實例名稱、域和端口從 Node.js 連接到 SQL 服務器實例?

Windows SQL 的身份驗證不使用密碼。 它使用現有登錄用戶的憑據。

所以你的 SSMS 連接字符串實際上忽略了用戶名和密碼,你不應該通過它。 為了獲得與 Tedious 相同的效果,從文檔中看起來您需要設置:

 authentication.type = 'ntlm'

但如果沒有,那么也可以嘗試其他一些選項。

Windows Auth 的工作方式是它傳遞用戶在登錄時已經擁有的 Kerberos 票證(對於 AD 用戶)或 NTLM hash(對於非 AD)。連接字符串中沒有密碼


警告:如果您使用的是 Azure AD,而不是內部部署,則工作方式不同。 您可以使用密碼或 Kerberos 票證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM