通过来自不同应用程序服务器的存储连接字符串在Azurestorage上创建和访问sqlite-DB

时间:2019-07-03 06:36:36

标签: c# sqlite azure-storage

我有一个针对不同客户数据库的Webapp,该Webapp运行在多个Application Server上。每个客户都分配给一个AS上的实例。 对于一些客户,某些数据保存在Application Server自身的其他SQLite-DB中;添加此类数据后,WebApp会测试该AS上是否已经存在相应的SQLite-DB,如果不存在,则会使用以下代码创建它:

dbFileName = "C:\\" + dbFileName;

            SQLiteConnection.CreateFile(dbFileName);

            using (System.Data.SQLite.SQLiteConnection con = new System.Data.SQLite.SQLiteConnection("data source=" + dbFileName))
            {
                using (System.Data.SQLite.SQLiteCommand com = new System.Data.SQLite.SQLiteCommand(con))
                {
                    con.Open();

问题是,如果我将客户分配给另一个AS上的一个实例,则必须再次创建SQLite-db,因为它无法访问另一个AS上的一个实例。

现在,我的想法是在某些Azure存储上创建SQLite-dbs,我可以在其中从每个AS访问它,但是到目前为止,我无法通过SQLite-Connection访问它。

我了解我的特定SAS(=共享访问签名)和连接字符串,例如在https://www.connectionstrings.com/windows-azure/上指定的字符串 但是我不确定应该为SQLiteConnection使用哪一部分。

有可能吗?

到目前为止,我发现的唯一与Azurestorage连接的示例都是通过HttpRequests(例如How to access Azure blob using SAS in C#)进行的,这对我没有帮助,或者没有人可以向我展示解决此问题的方法吗?

如果您需要更多信息,请告诉我,我在解释问题上很不好,并且没有考虑到很多事情不是常识...

1 个答案:

答案 0 :(得分:0)

您不能将Azure存储Blob用作普通文件系统。 SQLite连接字符串中的数据源应该是文件路径或内存。

据我所知,如果要使用Azure存储Blob,则只能mount Blob storage as a file system with blobfuse on Linux OS。但这与普通文件系统不是100%兼容。

另一个选择是使用Azure存储文件,它支持SMB协议。您可以挂载网络驱动程序并使用它。