标签: azure-elastic-scale

无法在SQL Azure中的数据库之间进行查询

我有一个SQL Azure数据库服务器,我需要在数据库之间进行查询,但无法弄清楚如何实现这一目标.

这是我的数据库的结构:

  • Server.X
    • Database.A
    • Database.B
    • Database.C

Database.A中,我有一个需要从Database.B中检索数据的存储过程.通常情况下,我会引用数据库,SELECT * FROM [Database.B].[dbo].[MyTable]但在SQL Azure中似乎不允许这样做.

Msg 40515, Level 15, State 1, Line 16 Reference to database and/or server name in 'Database.B.dbo.MyTable' is not supported in this version of SQL Server.

有没有办法在数据库端执行此操作?

在最终版本中,数据库A和C都需要来自数据库B的数据.

azure azure-elastic-scale azure-sql-database

54
推荐指数
3
解决办法
5万
查看次数

自动调整Azure SQL数据库

我们有一个使用Azure SQL作为数据库后端的应用程序.在正常负载/条件下,此数据库可以在Premium 1计划上成功运行.但是,在凌晨时分,我们有一些工作会增加数据库负载.在这几个小时内,我们需要转向Premium 3计划.Premium 3的成本大约是8倍,所以显然我们不想支付全天候运行此计划的成本.

是否可以上下自动调整数据库?云服务提供了一种简单的方法来扩展Azure门户中的实例数量,但是,Azure SQL数据库不存在这样的情况.可以使用Azure SDK以编程方式完成吗?我无法找到有关此主题的任何文档.

azure azure-elastic-scale azure-sql-database

36
推荐指数
4
解决办法
1万
查看次数

启用 - 迁移"对象引用未设置为对象的实例"

我刚刚创建了一个新的服务结构服务,它将使用Entity Framework和Elastic Client Database库定期尝试将一些模型保存到SQL Azure.我正在尝试尽可能地对SQL Azure Elastic Sc​​ale Client Library EF示例(Elastic DB Tools EF Sample)进行建模.我正处于需要启用迁移的位置,但是当我运行Enable-Migrations时,我收到以下错误消息.我正在使用ContextTypeName参数,因为如果我最终将针对具有不同模型的相同数据库使用不同的服务结构服务,它听起来就像是需要的.有什么建议?

PM> Enable-Migrations -ContextTypeName "ServiceHealth.DbService"
Exception calling "SetData" with "2" argument(s): "Type 'Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProject' in assembly 'Microsoft.VisualStudio.ProjectSystem.VS.Implementation, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is 
not marked as serializable."
At C:\eNowCloud\eNow.MicroServices\packages\EntityFramework.6.1.3\tools\EntityFramework.psm1:720 char:5
+     $domain.SetData('startUpProject', $startUpProject)
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : SerializationException

System.NullReferenceException: Object reference not set to an instance of an object.
   at System.Data.Entity.Migrations.Extensions.ProjectExtensions.GetProjectTypes(Project project, Int32 shellVersion)
   at System.Data.Entity.Migrations.Extensions.ProjectExtensions.IsWebProject(Project project)
   at System.Data.Entity.Migrations.MigrationsDomainCommand.GetFacade(String …
Run Code Online (Sandbox Code Playgroud)

entity-framework azure-elastic-scale azure-sql-database

7
推荐指数
1
解决办法
9686
查看次数

在数据库上下文上执行Elastic Sc​​ale多分片查询

我正忙于在我正在进行的一个项目中实施新的Elastic Sc​​ale技术.这项技术似乎解决了我们在设计新应用程序基础时遇到的一些复杂问题.

到目前为止,这些示例看起来很棒,我正忙着在新创建的DAL中实现它.

对于我们的应用程序,我们不能仅依赖Azure中的Elastic Sc​​ale.应用程序必须能够在单个实例计算机上运行,​​也可以在内部运行.因此,我创建了以下代码来查询数据库,该数据库运行良好,也使用Elastic Sc​​ale.

public IEnumerable<AnEntity> All()
{
    var dbConnection = GetConnection();
    using (var context = new OurDatabaseContext(dbConnection))
    {
        var theEntities = context.EntityTable;
        return theEntities.ToArray();
    }
}
private IDbConnection GetConnection()
{
    var connectionInstance = connection[ConnectionStringNames.TheDatabase];
    var dbConnection = connectionInstance.Create();
    return dbConnection;
}
Run Code Online (Sandbox Code Playgroud)

connectionInstance通过IoC的配置,这将创造一个IDbConnection我们可以在使用OurDatabaseContext.一切都非常简单明了.

我面临的主要问题是MultiShardConnection由Elastic Sc​​ale提供并在示例中实现.

所以我的问题是,是否可以使用MultiShardConnection数据库上下文(如LINQ2SQL(我们正在使用)或EF).

如果没有,是唯一的解决方案,使用MultiShardConnectionMultiShardCommand?或者什么时候可以使用这样的功能?

c# entity-framework linq-to-sql azure-elastic-scale azure-sql-database

6
推荐指数
1
解决办法
1073
查看次数

Azure SQL Server弹性池 - 自动将数据库添加到池中

目前我们有一个Azure SQL Server,每次创建新的Web应用程序时,我们都使用EF Core Code First来生成数据库.但是,在创建数据库之后,我们手动转到Azure门户并将新创建的数据库添加到Azure SQL Server内的弹性池中.有可能以某种方式自动化进程,以便通过门户网站或使用EF或其他任何方式生成每个新创建的数据库,它将自动添加到池中吗?

azure azure-elastic-scale azure-sql-database azure-sql-server

6
推荐指数
1
解决办法
1432
查看次数

Azure Elastic DB中ReferenceTableInfo与ShardedTableInfo有什么区别?

我下载了示例代码->“ ElasticScaleStarterKit”(在Visual Studio中->文件->新建->项目->在线->用于Azure SQL的Elastic DB Tools-入门)。

该模式定义如下:

schemaInfo.Add(new ReferenceTableInfo("Regions"));
schemaInfo.Add(new ReferenceTableInfo("Products"));
schemaInfo.Add(new ShardedTableInfo("Customers", "CustomerId"));
schemaInfo.Add(new ShardedTableInfo("Orders", "CustomerId"));
Run Code Online (Sandbox Code Playgroud)

ReferenceTableInfo与ShardedTableInfo有什么区别?

我了解,简单的区别是所有数据库(例如状态表等)都适用的“干燥”信息与特定客户的个人信息之间。

但是,如果所有表都设置为“引用”会发生什么?这种设置的缺点是什么:

schemaInfo.Add(new ReferenceTableInfo("Regions"));
schemaInfo.Add(new ReferenceTableInfo("Products"));
schemaInfo.Add(new ReferenceTableInfo("Customers"));
schemaInfo.Add(new ReferenceTableInfo("Orders"));
Run Code Online (Sandbox Code Playgroud)

希望有帮助:)

谢谢!

azure-elastic-scale azure-sql-database

5
推荐指数
1
解决办法
131
查看次数

无法使用Azure SQL Elastic Sc​​ale删除分片映射

我们的系统中有一个称为"身份计划"的实体.这也是我们的分片边界,每个身份程序都存储在自己的分片中,因此分片的标识符是身份程序的标识符.

我们正在实施物理删除身份程序的能力.作为该过程的一部分,我们希望清理分片图.为此,我写了以下内容:

var shardKey = new Guid("E03F1DC0-5CA9-45AE-B6EC-0C90529C0062");

var connectionString = @"shard-catalog-connection-string";
var shardMapManager = ShardMapManagerFactory.GetSqlShardMapManager(connectionString, ShardMapManagerLoadPolicy.Lazy);
var shardMap = shardMapManager.GetListShardMap<Guid>("IdentityProgramIdListShardMap");

if (shardMap.TryGetMappingForKey(shardKey, out PointMapping<Guid> mapping))
{
    if (mapping.Status == MappingStatus.Online)
    {
        shardMap.MarkMappingOffline(mapping);
    }

    shardMap.DeleteMapping(mapping);
}
Run Code Online (Sandbox Code Playgroud)

问题是当它遇到DeleteMapping调用时会出现异常:

ShardManagementException:在分片映射'IdentityProgramIdListShardMap'中引用shard'[shard-connection-string]'的映射不存在.执行存储过程'__ShardManagement.spBulkOperationShardMappingsGlobalBegin'以执行操作'RemovePointMapping'时发生错误.如果另一个并发用户已经删除了映射,则会发生这种情况.

但是映射还没有被删除,因为在那之后我执行:

mappings = shardMap.GetMappings();
foreach(var mapping in mappings)
{
    Console.WriteLine(mapping.Value);
}
Run Code Online (Sandbox Code Playgroud)

我可以看到shardmap条目仍然存在,并标记为脱机.

如果我删除了对MarkMappingOffline我的调用,我会得到一个异常,说明无法删除分片映射,因为它是在线的.

所以我似乎有一个捕获22.如果我将其标记为脱机,则认为分片映射已消失,并且不允许我将其删除.如果我没有将其标记为离线,则告诉我它必须处于脱机状态.

c# azure-elastic-scale azure-sql-database azure-elastic-sharding

5
推荐指数
1
解决办法
424
查看次数

超时时间已到。在Azure SQL上完成操作之前经过的超时时间

我需要在global.asax应用程序启动事件的Windows Azure上的Windows上创建一个sql数据库,但是出现此错误:

Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.  This failure occurred while attempting to connect to the routing destination. The duration spent while attempting to connect to the original server was - [Pre-Login] initialization=296; handshake=324; [Login] initialization=0; authentication=1; [Post-Login] complete=94;
Run Code Online (Sandbox Code Playgroud)

我的代码如下:

   private void SetupSSM() {
            SqlConnectionStringBuilder connStrBldr = new SqlConnectionStringBuilder
            {
                UserID = SettingsHelper.AzureUsernamedb,
                Password = SettingsHelper.AzurePasswordDb,
                ApplicationName = SettingsHelper.AzureApplicationName,
                DataSource = SettingsHelper.AzureSqlServer
            };

            bool created=DbUtils.CreateDatabaseIfNotExists(connStrBldr.ConnectionString, SettingsHelper.Azureshardmapmgrdb);
            if(created) …
Run Code Online (Sandbox Code Playgroud)

sql-server asp.net-mvc azure azure-elastic-scale azure-sql-database

4
推荐指数
1
解决办法
1万
查看次数

添加新碎片 - Azure Elastics Scale

我在为系统创建新碎片时遇到了麻烦.我有一个已经分片的数据库,有两个分片.

0-280000
280000-inf

我正在使用Microsoft提供的应用程序.

使用上面的应用程序我选择添加分片,当我尝试添加新的分片并输入400000作为新的高键时,执行操作,并在最后尝试添加范围映射时,我收到以下错误.

错误

{"映射引用碎片'[数据源= XXXXXXXXXXXXXX数据库= XXXXXX]’中的碎片图'用户ID’不能被添加,因为它覆盖范围已经被另一个映射进行映射.在执行存储过程发生错误'__ShardManagement.spBulkOperationShardMappingsGlobalBegin’的操作'AddRangeMapping'.如果另一个并发用户已添加覆盖给定范围的映射,则会发生这种情况."}

在这方面的任何帮助将受到高度赞赏.

azure azure-elastic-scale azure-sql-database

3
推荐指数
1
解决办法
156
查看次数

Azure SQL弹性性能量表

我有标准S1 SQL数据库,适用于大多数任务.但是我有一个需要更多计算能力的夜间任务.

我想知道是否有人有使用调度来根据服务层和性能级别扩展数据库,执行一个或多个特定SQL任务,然后缩小到原始级别的经验.

sql azure-scheduler azure-elastic-scale azure-sql-database

2
推荐指数
1
解决办法
190
查看次数

如何以编程方式在Basic版本中创建sql数据库?在Windows Azure中

这里解释了这个的语法:

如何首先通过Enity Framework代码以编程方式创建基本/标准版类型的Sql Azure数据库

但是,我的代码实现如下:

 public static bool CreateDatabaseIfNotExists(string connectionString, string databaseName)
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                conn.Open();

                SqlCommand cmd = new SqlCommand(
                    string.Format("SELECT * FROM sys.databases WHERE [name]=\'{0:S}\'", databaseName),
                    conn);

                cmd.CommandTimeout = int.MaxValue;

                if (cmd.ExecuteScalar() == null)
                {
                    SqlCommand cmd2 = new SqlCommand(
                        string.Format("CREATE DATABASE [{0:S}];", databaseName),
                        conn);
                    cmd2.CommandTimeout = int.MaxValue;

                    cmd2.ExecuteNonQuery();

                    return true;
                }
                else
                    return false;
            }
        }
Run Code Online (Sandbox Code Playgroud)

我应该把基本字符串放在哪里,因为我不知道放在哪里.

c# sql azure azure-elastic-scale azure-sql-database

1
推荐指数
1
解决办法
869
查看次数