数据未插入到 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 上的数据库出现所有这些问题的原因吗?

数据未插入到 Azure Sql 数据库中

错误消息几乎描述了您的问题:

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((?可能会对你有所帮助。