gpt4 book ai didi

sql-server - 通过 bacpac 导入创建的 Azure SQL 数据库失败

转载 作者:行者123 更新时间:2023-12-03 12:39:54 24 4
gpt4 key购买 nike

我们正在测试从本地 SQL Server 2008R2 数据库到 Azure 的迁移,但遇到了障碍。

流程遵循,基于 SO 文章:

  • 安装 SQL Server 2012 客户端工具
  • 修改数据库以删除具有指定填充因子的索引,以及无效的 View 和过程(这是通过使用 SSMS 的导出数据层应用程序工具确定的,直到成功创建 bacpac 文件)
  • 将成功创建的 bacpac 文件上传到 Azure
  • 完成了使用导入方法创建新数据库的步骤
  • 从显示的 blob 存储状态中检索了 bacpac 文件,但随后发生以下错误

BadRequest ;Request Error;Error Status Code:</B> 'BadRequest'</P><P><B>Details: </B>Error encountered during the service operation. ; Exception Microsoft.SqlServer.Management.Dac.Services.ServiceException:Unable to authenticate request; </P></DIV></BODY></html>

注意:上面的错误文本被删减以排除 URL,因为我没有足够的分数。

我似乎找不到关于此错误的任何信息,也找不到任何其他日志详细信息来帮助确定为什么它不会导入。

由于错误提到无法进行身份验证,我们还尝试执行以下操作:

  • 在本地数据库上创建了一个新的用户和密码
  • 使用相同的新用户和密码来定义 Azure 上的新数据库

这没有任何区别。

如果有人能为我们指明正确的方向以实现此目的,我们将不胜感激,因为我们需要多次重复此过程。

谢谢。

最佳答案

我们需要同样的东西。以下是我们执行的一些步骤和结果:

1) 使用由 ghuey 创建的 SQL 数据库迁移工具导出您可以在这里下载:https://sqlazuremw.codeplex.com/这是一个很棒的工具,我真的建议您先尝试一下。取决于你的数据库的复杂性,它会工作得很好。对我们来说,不幸的是没有用。所以你进入了下一步。

2) DAC 封装2008 可以选择生成 DACPAC 女巫在 Azure 上创建数据库的结构,然后您可以通过引用 2008 Studio Managament 中的连接部署到 Azure,右键单击 Azure 服务器,部署...请在此处查看更多详细信息: http://world.episerver.com/documentation/Items/Upgrading/EPiserver-Commerce/8/Migrating-Commerce-databases-to-Azure/好吧,如果这对你有用,试试这个。这更容易。对我们来说,不幸的是没有用。所以你进入了下一步。

3)使用2012服务器导出bacpac再导入azure此步骤需要多个操作才能完成。在这里:

一个。生成备份到2008并将文件移动到2012服务器;

恢复备份到2012;

执行一些 SQL:

c1。将 SCHEMA 的所有所有者设置为 DBO。您可以使用 SQL 来移动架构,如下所示:ALTER AUTHORIZATION ON SCHEMA::[db_datareader] TO [dbo]

c2。删除您创建的所有用户;

c3。删除所有列和表的所有 MS_Description(扩展属性)

c4。删除所有约束(提示:在启用删除和创建选项的情况下生成数据库的完整脚本并复制“删除约束”的部分

c5。我们需要删除数据库索引的填充因子选项。您可以重新创建索引(包括具有关联聚集索引的 PK)。好吧,要删除每个 PK Clustered,并不是那么容易,但是在 Google 的帮助下,您将能够找到一个脚本来帮助您创建和删除。这是脚本:

    DECLARE @object_id int;
DECLARE @parent_object_id int;
DECLARE @TSQL NVARCHAR( 4000);
DECLARE @COLUMN_NAME SYSNAME;
DECLARE @is_descending_key bit;
DECLARE @col1 BIT;
DECLARE @action CHAR( 6);

SET @action = 'DROP';
--SET @action = 'CREATE';

DECLARE PKcursor CURSOR FOR
select kc.object_id , kc .parent_object_id
from sys.key_constraints kc
inner join sys .objects o
on kc.parent_object_id = o.object_id
where kc.type = 'PK' and o. type = 'U'
and o.name not in ( 'dtproperties','sysdiagrams' ) -- not true user tables
order by QUOTENAME (OBJECT_SCHEMA_NAME( kc.parent_object_id ))
,QUOTENAME( OBJECT_NAME(kc .parent_object_id));

OPEN PKcursor ;
FETCH NEXT FROM PKcursor INTO @object_id, @parent_object_id;

WHILE @@FETCH_STATUS = 0
BEGIN
IF @action = 'DROP'
SET @TSQL = 'ALTER TABLE '
+ QUOTENAME (OBJECT_SCHEMA_NAME( @parent_object_id))
+ '.' + QUOTENAME(OBJECT_NAME (@parent_object_id))
+ ' DROP CONSTRAINT ' + QUOTENAME(OBJECT_NAME (@object_id))
ELSE
BEGIN
SET @TSQL = 'ALTER TABLE '
+ QUOTENAME (OBJECT_SCHEMA_NAME( @parent_object_id))
+ '.' + QUOTENAME(OBJECT_NAME (@parent_object_id))
+ ' ADD CONSTRAINT ' + QUOTENAME(OBJECT_NAME (@object_id))
+ ' PRIMARY KEY'
+ CASE INDEXPROPERTY( @parent_object_id
,OBJECT_NAME( @object_id),'IsClustered' )
WHEN 1 THEN ' CLUSTERED'
ELSE ' NONCLUSTERED'
END
+ ' (' ;

DECLARE ColumnCursor CURSOR FOR
select COL_NAME (@parent_object_id, ic.column_id ), ic .is_descending_key
from sys .indexes i
inner join sys. index_columns ic
on i .object_id = ic .object_id and i .index_id = ic .index_id
where i .object_id = @parent_object_id
and i .name = OBJECT_NAME (@object_id)
order by ic. key_ordinal;

OPEN ColumnCursor ;

SET @col1 = 1 ;

FETCH NEXT FROM ColumnCursor INTO @COLUMN_NAME, @is_descending_key;
WHILE @@FETCH_STATUS = 0
BEGIN
IF (@col1 = 1 )
SET @col1 = 0
ELSE
SET @TSQL = @TSQL + ',';

SET @TSQL = @TSQL + QUOTENAME( @COLUMN_NAME)
+ ' '
+ CASE @is_descending_key
WHEN 0 THEN 'ASC'
ELSE 'DESC'
END;

FETCH NEXT FROM ColumnCursor INTO @COLUMN_NAME, @is_descending_key;
END;

CLOSE ColumnCursor ;
DEALLOCATE ColumnCursor ;

SET @TSQL = @TSQL + ');';

END;

PRINT @TSQL;

FETCH NEXT FROM PKcursor INTO @object_id , @parent_object_id ;
END;

CLOSE PKcursor ;
DEALLOCATE PKcursor ;

c6。重新创建 FK

c7。删除所有索引

c8。重新创建所有索引(没有填充因子选项)

现在,右键单击 2012 上的数据库,并将数据层以 BACPAC 格式导出到 Azure 存储。完成后,在 Azure 上导入。它应该有效:-)

关于sql-server - 通过 bacpac 导入创建的 Azure SQL 数据库失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20139094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com