这是我第一次使用Azure而且我遇到了问题。
我的MVC项目中有一个注册和登录脚本,它在我的本地计算机上运行正常但是当我尝试使用Azure时,我在页面上收到此消息“处理您的请求时出错。”
我已经在防火墙中允许了IP。 我已将数据库与网站链接。
该项目使用代码优先模型。当我尝试注册时,它将在数据库中创建表,但不会输入用户数据。所以我剩下的就是一张空桌子。
当我尝试从Sql management studio部署我的数据库时,它会创建表但无法输入数据。
我做错了什么?
修改
因此,当我尝试从SQL Management Studio部署数据库时,这是导入数据库时出现的错误
TITLE: Microsoft SQL Server Management Studio
------------------------------
Could not import package.
Warning SQL0: A project which specifies SQL Server 2012 as the target platform may experience compatibility issues with SQL Azure.
Error SQL72014: .Net SqlClient Data Provider: Msg 40511, Level 15, State 1, Line 2 Built-in function 'newsequentialid' is not supported in this version of SQL Server.
Error SQL72045: Script execution error. The executed script:
ALTER TABLE [dbo].[Domains]
ADD DEFAULT (newsequentialid()) FOR [DomainId];
(Microsoft.SqlServer.Dac)
我认为这是由于我的模型使用GUID。这可能是Azure上数据库导致所有这些问题的原因吗?
答案 0 :(得分:2)
错误消息几乎描述了您的问题:
Warning SQL0: A project which specifies SQL Server 2012 as the target platform may
experience compatibility issues with SQL Azure.
Error SQL72014: .Net SqlClient Data Provider: Msg 40511, Level 15, State 1, Line 2
Built-in function 'newsequentialid' is not supported in this version of SQL Server.
SQL Server和Azure SQL是not 100% feature compatible(即使差距已经很快缩小):
目前,Azure SQL数据库不支持SQL Server的所有功能。有关详细的比较信息,请参阅Azure SQL数据库指南和限制。要将现有数据库移动到Azure SQL数据库时要注意这一点,因为在重新设计数据库时可能需要一些额外的预算。
因此,您的问题是您使用了不受支持的功能newsequentialid
。
答案 1 :(得分:1)
上周晚些时候,Azure推出了最新版Azure SQL数据库的预览版,在该预览版中,现在支持NewSequentialID,以及之前没有的许多其他功能。
要使用最新版本创建数据库,请使用portal.azure.com处的新门户,并按照屏幕上的指导邀请您在创建新的Azure数据库时使用预览版。
答案 2 :(得分:0)
简短的回答是,如果您只需要一个独特的Guid,只需将所有newsequentialid()
更改为newid()
。
这是一篇很好的参考博客文章Uniqueidentifier and Clustered Indexes,由Microsoft Azure团队发布。
在有关newsequentialid()
的部分中,它描述了差异:
如果NEWID()函数生成唯一的非顺序 uniqueidentifier比NEWSEQUENTIALID()函数生成唯一 顺序uniqueidentifier。 NEWSEQUENTIALID()的唯一技巧 功能是根据网络生成部分GUID 计算机卡。
此外,甚至不推荐使用newsequentialid()
,因为
(i)可以猜测下一个生成的GUID的值, 因此,访问与该GUID相关联的数据。
答案 3 :(得分:-1)
很难说没有任何代码会发生什么,但很可能你忘记将条目提交到你的表中。 SqlCommand.Dispose() before SqlTransaction.Commit()?可能会对您有所帮助。