如何使用 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 sqlfilestream
1个回答
-1
投票

听起来您遇到了跨域信任问题。由于您的应用程序域不受 SQL Server 托管域的信任,因此它会阻止用户跨域访问资源。我能够重现这个场景并找到一个适合我的解决方案。以下是我遵循的步骤: 建立信任关系:第一步是在两个域之间建立信任关系。您可以参考此视频,了解如何实现此目的的清晰说明: 在域之间建立信任。

  1. 成功建立信任关系后,转到您的 SQL Server 数据库并使用 Windows 身份验证创建新登录名:请按照以下步骤操作..
  • 在 SQL Server 中创建登录名。
  • 在“登录 - 新建”对话框中,单击登录名文本框旁边的搜索按钮。
  • 将打开一个新对话框;单击“位置”按钮从下拉列表中选择受信任的域。
  • 选择可信域名并点击确定
  • 输入该域的用户名,然后使用“检查名称”按钮以确保您选择正确的域用户。
  • 您可以通过选择适当的服务器角色将用户分配为系统管理员,并将用户映射到 SQL Server 的“登录”界面中所需的数据库。
  1. 测试域用户:最后,测试您创建的使用Windows身份验证模式登录SQL Server的域用户。如果登录成功,您的应用程序应该按预期运行。 通过执行这些步骤,您应该能够解决信任问题并启用跨域访问。如果您有任何疑问,请告诉我。
© www.soinside.com 2019 - 2024. All rights reserved.