gpt4 book ai didi

sql - 此版本的 SQL Server 不支持对数据库和/或服务器名称的引用

转载 作者:行者123 更新时间:2023-12-03 16:48:01 27 4
gpt4 key购买 nike

客观的
我正在尝试使用类似于以下的脚本将来自几个不同 Azure 数据库的数据放入一个新的 Azure 数据库中:

:setvar db1 [dbSource1]
:setvar db2 [dbSource2]
:setvar dbTarget "myNewDatabase"

USE master;
GO

DROP DATABASE IF EXISTS $(dbTarget)
GO

CREATE DATABASE $(dbTarget)
GO

CREATE TABLE $(dbTarget).[dbo].[Tenants](
[TenantId] [nvarchar](450) NOT NULL,
[OwnerObjectId] [nvarchar](max) NOT NULL,
[NetworkId] [nvarchar](450) NOT NULL,
[EndorserType] [int] NOT NULL,
[Active] [bit] NOT NULL DEFAULT 1,
[Region] [nvarchar](450) NOT NULL DEFAULT 'us-central',
CONSTRAINT [PK_Tenants] PRIMARY KEY CLUSTERED
(
[TenantId] ASC
)

CREATE TABLE $(dbTarget).[dbo].[ProductPlan](
[ProductPlanId] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](max) NULL,
[Description] [nvarchar](max) NULL,
[IsStandard] [bit] NOT NULL,
[StripePlanId] [nvarchar](max) NULL,
[IsYearly] [bit] NOT NULL,
CONSTRAINT [PK_ProductPlan] PRIMARY KEY CLUSTERED
(
[ProductPlanId] ASC
)

INSERT INTO $(dbTarget).[dbo].[Tenants] (TenantId, OwnerObjectId, NetworkId, EndorserType)
SELECT TenantId, OwnerObjectId, NetworkId, EndorserType FROM $(db1).[domain].[Tenants]

INSERT INTO $(dbTarget).[dbo].[ProductPlan] (ProductPlanId, Name, Description, IsStandard, StripePlanId, IsYearly)
SELECT ProductPlanId, Name, Description, IsStandard, StripePlanId, IsYearly FROM $(db2).[dbo].[ProductPlan]
本质上,我在新数据库中创建表,其模式与源数据库中的模式完全相同,然后尝试将这些源表中的所有数据插入到目标表中。
注意:这在本地数据库上运行良好,但在我的 Azure SQL Server 中的数据库上运行失败
问题

Reference to database and/or server name in 'myNewDatabase.dbo.Tenants' is not supported in this version of SQL Server.


所以脚本创建了新数据库就好了,但是一旦它试图在该数据库中创建一个表,它就会吐出上面的错误。尝试通过插入 USE myNewDatabase 来切换上下文在创建数据库之后和创建第一个表之前抛出另一个错误: USE statement is not supported to switch between databases. Use a new connection to connect to a different database.尝试的解决方案
我试过像第二个错误状态那样建立新的连接,但似乎无法连接到特定的数据库。我总是最终连接到 master,然后再次出现第一个错误。
关于我需要做什么才能完成这项工作的任何想法?先谢谢了!

最佳答案

在 Azure SQL 数据库中,要创建数据库,登录名必须是以下之一:

  • 服务器级主体登录
  • 本地 Azure SQL Server 的 Azure AD 管理员
  • 作为 dbmanager 数据库角色成员的登录名

  • 如果有权限,可以运行 create database在每个数据库中,如在主数据库或用户数据库中。
    但是 Azure SQL 数据库不支持 USE 数据库或直接跨数据库操作,即使这些数据库在同一个 Azure SQL Server 中。
    Azure SQL 数据库仅支持使用 elastic query 的跨数据库查询.那仍然需要很多步骤来实现跨查询。不支持跨数据库创建表。我们必须在其他数据库上创建一个新连接(查询 session )。
    就目前而言,它不受支持,我们无法完成这项工作。
    更多详情请引用: Transact-SQL syntax not supported in Azure SQL Database

    关于sql - 此版本的 SQL Server 不支持对数据库和/或服务器名称的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63906108/

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