Лучшие практики аутентификации потока файлов SQL

Я смог нормально использовать SQL Filestream локально, но когда я пытаюсь загрузить файлы на удаленный SQL-сервер, который использует аутентификацию SQL, я получаю исключение Access Denied. По-видимому, поток файлов SQL работает только с аутентификацией Windows (Integrated Security = true), а не с аутентификацией SQL, которая есть у нас в настоящее время.

На самом деле никто не использует аутентификацию Windows в производственной среде, поэтому я просто хочу знать, как преодолеть это ограничение . Каков наилучший метод?

    public static void AddItem(RepositoryFile repository, byte[] data)
{
    using (var scope = new TransactionScope())
    {
        using (var db = new MyEntities()) // DBContext
        {
            db.RepositoryTable.AddObject(repository);
            db.SaveChanges();
        }

        using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
        using (var cmd = new SqlCommand(string.Format("SELECT Data.PathName(), GET_FILESTREAM_TRANSACTION_CONTEXT() FROM dbo.RepositoryTable WHERE ID='{0}'", repository.ID), con)) // "Data" is the column name which has the FILESTREAM. Data.PathName() gives me the local path to the file.
        {
            cmd.Connection.Open();
            using (var reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    var path = reader.GetString(0);
                    var transactionContext = reader.GetSqlBytes(1).Buffer;
                    var fileStream = new SqlFileStream(path, transactionContext, FileAccess.Write);

                    fileStream.Write(contents, 0, contents.Length); // I get the error at this line.
                    fileStream.Close();
                }
            }
        }

        scope.Complete();
    }
}
5
задан tempid 15 December 2010 в 16:22
поделиться