我的Azure角色从数据库中抓取要处理的内容 - 它包含一个实例System.Data.SqlClient.SqlConnection并定期创建SqlCommand实例并执行SQL查询.
现在偶尔(通常是几天一次)运行查询将触发SqlException异常
该服务在处理您的请求时遇到错误.请再试一次.错误代码40143.当前命令发生严重错误.结果(如果有的话)应该被丢弃.
我已经见过很多次,现在我的代码捕获它,呼吁Dispose()对SqlConnection实例,然后重新打开连接和试查询.后者通常会导致另一个SqlException例外
超时已过期.操作完成之前经过的超时时间或服务器没有响应.
这看起来非常像SQL Azure服务器无响应或因任何原因无法使用.
目前我的代码没有捕获后一个异常,它在外部传播RoleEntryPoint.Run()并重新启动角色.重启通常需要大约十分钟,一旦完成,问题就会消失一天左右.
我不喜欢我的角色重新启动 - 这需要一段时间,我的服务功能受到阻碍.我想做一些更聪明的事情.
解决这个问题的策略是什么?我应该多次重试查询多少次以及间隔多少次?我应该做别的吗?我什么时候放弃并让角色重启?
我正在努力确保为所有用户分配了特定角色.是否有任何视图或SQL查询来获取此信息?
完全例外:
SqlAzureExecutionStrategy
为什么不由SqlAzureExecutionStrategy处理?特别是因为这发生在VIP掉期期间.
写一个DbExecutionStrategy处理这个的自己是一个好主意,还是我错过了什么?
更新 我从Azure云服务迁移到Azure Web应用程序,我看到此错误的次数严重下降.
我刚刚在Azure中创建了一个新的SQL Server数据库,然后使用Azure门户中的链接在Visual Studio 2015中打开它.我不得不将我的IP添加到防火墙,但其他过程进展顺利.
但是,当我尝试通过SQL Server对象资源管理器与数据库服务器进行交互时,速度非常慢.扩展我的数据库中的任何文件夹(例如,Tables文件夹)需要10到30秒.数据库是全新的,因此它唯一拥有的是Azure在实例化新数据库时创建的内容.
这是我创建并尝试在Visual Studio中查看的第二个Azure数据库,两者都有相同的问题.有了第一个,我想也许我在设置过程中做错了什么,但这次我确保按照这本书做了一切.
从Visual Studio中运行针对DB实际查询(右键单击DB, ,New Query ...)select * from INFORMATION_SCHEMA.TABLES;是非常快的,所以它不会出现能与我连接到Azure中的问题.
为什么这么痛苦?我该怎么做才能让它更快?
我14.0.24720.00在Windows 10上使用Visual Studio 2015 Update 1()(完全修补),在数据库创建期间,我选中了框以使用最新版本.
sql-server azure visual-studio visual-studio-2015 azure-sql-database
我使用以下代码连接到使用Active Directory集成身份验证的SQL Azure DB.
private string GenerateConnectionString(string databaseName, string serverName)
{
SqlConnectionStringBuilder connBuilder = new SqlConnectionStringBuilder();
sqlConnectionBuilder.DataSource = string.Format(
"tcp:{0}.database.windows.net",
serverName);
connBuilder.InitialCatalog = databaseName;
connBuilder.Authentication = SqlAuthenticationMethod.ActiveDirectoryIntegrated;
connBuilder.ConnectTimeout = 30;
return connBuilder.ConnectionString;
}
Run Code Online (Sandbox Code Playgroud)
身份验证从Active Directory集成身份验证更改为Active Directory通用身份验证,以支持多因素身份验证.
我看到枚举
System.Data.SqlClient.SqlAuthenticationMethod没有Active Directory通用身份验证的值.是否仍然可以使用System.Data.SqlClient连接到DB?如果是,我在代码中要做的改变是什么?
我有一个SQL Azure表,我已经打开了新的Temporal Table功能(SQL Server 2016和SQL Azure v12的新功能).此功能创建另一个表来跟踪主表的所有更改(我在问题的底部包含了关于时态表的文档的链接).您可以使用特殊查询语言来获取此历史记录.请注意以下查询中的FOR SYSTEM_TIME ALL:
SELECT
ValidFrom
, ValidTo
, ShiftId
, TradeDate
, StatusID
, [LastActionDate]
, [OwnerUserID]
, [WorkerUserID]
, [WorkerEmail]
, [Archived]
FROM [KrisisShifts_ShiftTrade]
FOR SYSTEM_TIME ALL
WHERE [ShiftID] = 27
ORDER BY ValidTo Desc
Run Code Online (Sandbox Code Playgroud)
结果集如下所示:
ValidFrom ValidTo ShiftId TradeDate StatusID LastActionDate OwnerUserID WorkerUserID WorkerEmail Archived
--------------------------- --------------------------- ----------- ---------- ----------- ----------------------- ----------- ------------ -------------------------------------------------- --------
2017-06-21 00:26:44.51 9999-12-31 23:59:59.99 27 2017-01-27 3 2017-01-09 16:23:39.760 45 34 test@hotmail.com 1
2017-06-21 00:19:35.57 …Run Code Online (Sandbox Code Playgroud) "SQL Server数据库迁移向导"又称SQL Azure迁移向导,以前位于http://sqlazuremw.codeplex.com/,但它已经不见了.
我试图通过谷歌搜索它的新家,但我找不到它.
有谁知道这个工具去了哪里?
我正在尝试删除在表上创建的索引,但出现此错误 -
只有内存优化表才支持“ALTER TABLE DROP INDEX”操作。
我需要删除此索引才能删除表中的字段。有没有办法在不复制表和迁移所有数据的情况下做到这一点?
I try to connect Django to Azure SQL and have the error KeyError: deferrable when I start to migrate command. I can't find a resolution for this issue.
I use this application:
asgiref==3.2.10
Django==3.1
django-mssql-backend==2.8.1
pyodbc==4.0.30
pytz==2020.1
sqlparse==0.3.1
Run Code Online (Sandbox Code Playgroud)
and this is my config in settings.py:
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'DBNAME',
'USER': 'DBUSER',
'PASSWORD': 'PASSWORD',
'HOST': 'databasename.database.windows.net',
'PORT': '1433',
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
},
},
}
Run Code Online (Sandbox Code Playgroud)
The error is when i try …
我有一个Azure移动服务项目(C#后端),我最近创建并附加到Azure SQL数据库.我一直在尝试在该后备数据库上启用代码优先迁移,但在尝试更新数据库时会抛出错误.
我浏览了所有常规步骤以启用迁移(启用迁移,添加迁移).但是当我尝试Update-Database时,它会返回以下错误:
无法在表'dbo.Appointments'上创建多个聚簇索引.删除现有的聚簇索引"PK_dbo.Appointments",然后再创建另一个.
为什么会这样?我的数据库中没有任何表,该项目几乎是默认的.
azure ×4
sql ×4
sql-server ×3
c# ×2
.net ×1
ado.net ×1
django ×1
migration ×1
python ×1
reliability ×1
system.data ×1
t-sql ×1