如何使用 SQL Server 和 C# 检索远程 PC 上使用 FileStream 保存的数据?

问题描述 投票:0回答:1

我有一个表,其中包含为 FileStream 启用的字段,并且它正确保存了信息。
使用 Microsoft 指南(text)指示的代码,我可以检索 local 服务器上的文件信息。一旦我使用 SqlConnection 连接到远程服务器(使用 IP 地址),就会出现一条错误消息,指出“用户名或密码不正确”。
下面是我正在分析的代码。

SqlConnection sqlConnection = new SqlConnection("Integrated Security=true;Password=sensure;User ID=sa;Initial Catalog=DataTest;Data Source=" + "192.168.1.122" + "\\SQLEXPRESS" + ";MultipleActiveResultSets=True;encrypt=false");
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.Connection = sqlConnection;
...
                sqlConnection.Open();

                sqlCommand.CommandText = "SELECT RawImage.PathName()"
                    + " FROM DEFECTS";

                String filePath = null;

                Object pathObj = sqlCommand.ExecuteScalar();
                if (pathObj != DBNull.Value)
                {
                    filePath = (string)pathObj;
                }
                else
                {
                    throw new Exception("Get PathName FAILED!");
                }

                SqlTransaction transaction = sqlConnection.BeginTransaction("mainTransaction");
                sqlCommand.Transaction = transaction;

                sqlCommand.CommandText = "SELECT GET_FILESTREAM_TRANSACTION_CONTEXT()";

                Object obj = sqlCommand.ExecuteScalar();
                byte[] txContext = (byte[])obj;


                SqlFileStream sqlFileStream = new SqlFileStream(filePath, txContext, FileAccess.ReadWrite, FileOptions.None, 0);

有人知道我该如何解决这个问题吗?

c# sql-server windows-authentication
1个回答
0
投票

有一个何时在连接字符串中使用集成安全选项的指南。从连接字符串中删除“集成安全性”。它会解决你的问题。并检查数据库服务器中的 SQL Server 身份验证模式以确认允许使用哪种身份验证模式。

https://learn.microsoft.com/en-us/sql/relational-databases/security/choose-an-authentication-mode?view=sql-server-ver16

连接字符串中的 Integrated Security=true(或 Windows 上的 Integrated Security=SSPI)用于在连接到 SQL Server 数据库时启用 Windows 身份验证。这意味着用户的 Windows 凭据(用于登录 Windows 帐户的凭据)会自动传递到数据库服务器进行身份验证,而不是在连接字符串中显式指定 SQL Server 用户名和密码。

请在使用 Windows 身份验证模式时使用此选项。使用 SQL Server 身份验证模式时不要使用它:如果 SQL Server 配置为使用 SQL Server 身份验证,则需要在连接字符串中指定用户 ID 和密码。

© www.soinside.com 2019 - 2024. All rights reserved.