数据未插入到 Azure Sql 数据库中
本文关键字:Sql 数据库 Azure 插入 数据 | 更新日期: 2023-09-27 18:34:15
这是我第一次使用Azure,我遇到了问题。
我的 MVC 项目中有一个注册和登录脚本,它在我的本地计算机上工作正常,但是当我尝试使用 Azure 时,我在页面上收到此消息"处理您的请求时出错"。
我已允许防火墙中的 IP。我已经将数据库与该网站链接在一起。
该项目使用代码优先模型。当我尝试注册时,它将在数据库中创建表,但它不会输入用户数据。所以我只剩下一张空桌子。
此外,当我尝试从 Sql 管理工作室部署我的数据库时,它会创建表但无法输入数据。
我做错了什么?
编辑:
因此,当我尝试从SQL管理工作室部署数据库时,这是我在导入数据库时遇到的错误
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 上的数据库出现所有这些问题的原因吗?
错误消息几乎描述了您的问题:
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的功能不是100%兼容的(即使差距也在迅速缩小(:
目前,Azure SQL 数据库不支持 SQL Server 的所有功能。有关详细的比较信息,请参阅 Azure SQL 数据库指南和限制。如果要将现有数据库移动到 Azure SQL 数据库,请注意这一点,因为可能需要一些额外的预算来重新设计数据库。
所以你的问题是你正在使用一个不受支持的功能newsequentialid
。
上周晚些时候,Azure推出了最新版本的Azure SQL DB预览版,在该预览版中,现在支持NewSequentialID,以及许多其他以前不可用的功能。
若要使用最新版本创建数据库,请在 portal.azure.com 使用新门户,并按照屏幕上的指导进行操作,邀请你在创建新的 Azure 数据库时使用预览版。
简短的回答是,如果您只需要一个唯一的 Guid,只需将所有newsequentialid()
更改为 newid()
即可。
下面是一篇很好的参考博客文章唯一标识符和聚集索引,由 Azure 团队发布Microsoft。
在有关newsequentialid()
的部分中,它描述了差异:
如果 NEWID(( 函数生成唯一的非顺序 唯一标识符比 NEWSEQUENTIALID(( 函数生成唯一 顺序唯一标识符。NEWSEQUENTIALID(( 的唯一技巧 功能是GUID基于网络部分生成 计算机的卡。
此外,甚至不建议使用newsequentialid()
,因为
(i(可以猜测下一个生成的 GUID 的值,并且, 因此,访问与该 GUID 关联的数据。
没有任何代码很难说出发生了什么,但很可能你忘记了将条目提交到你的表中。SqlCommand.Dispose(( 在 SqlTransaction.Commit((?可能会对你有所帮助。