[英]T-SQL - batch delimiter required
我正在嘗試為 Azure SQL 數據庫構建 Visual Studio 解決方案。
我有帶有CREATE TABLE
及其擴展屬性的 SQL 腳本:
create table schema.table_name (
table_name_Key integer not null,
constraint PK_table_Name primary key (table_Name_Key, Some_Column)
)
go
if exists (select 1 from sys.extended_properties
where major_id = object_id('table_name') and minor_id = 0)
begin
execute sp_dropextendedproperty 'MS_Description',
'user', 'schema', 'table', 'table_name' ;
end
execute sp_addextendedproperty 'MS_Description',
'This table will be used for ....',
'user', 'schema', 'table', 'table_name';
go
if exists (select 1 from sys.extended_properties p
where p.major_id = object_id('table_name')
and p.minor_id = (select c.column_id from sys.columns c
where c.object_id = p.major_id
and c.name = 'table_name_Key'))
begin
execute sp_dropextendedproperty 'MS_Description',
'user', 'schema', 'table', 'table_name', 'column', 'table_name_Key';
end
execute sp_addextendedproperty 'MS_Description',
'Primary Key of table_name table',
'user', 'schema', 'table', 'table_name', 'column', 'table_name_Key';
go
構建時我仍然遇到錯誤,我缺少批定界符:
錯誤 SQL71006:每批只允許一個語句。 語句之間可能需要批分隔符,例如“GO”。
我錯過了什么,在哪里? 我已經嘗試在end
后添加go
但仍然出錯。
如果您在 Visual Studio 中使用 SQL 服務器數據工具 (SSDT) 數據庫項目,那么您需要以不同的方式思考問題(並完成一些教程或本教程)。
基本上每個 object 都保存在一個腳本中,您不必編寫條件語句(如IF EXISTS...
)。 您只需根據需要定義 object,SqlPackage.exe 在部署時計算出定義應該是什么。
具有一個擴展屬性的簡單表:
CREATE TABLE [testSchema].[table_name] (
[table_name_Key] INT NOT NULL,
[Some_Column] VARCHAR (10) NOT NULL,
CONSTRAINT [PK_table_Name] PRIMARY KEY CLUSTERED ([table_name_Key] ASC, [Some_Column] ASC)
);
GO
EXECUTE sp_addextendedproperty @name = N'Caption', @value = 'Some_column is a required column.', @level0type = N'SCHEMA', @level0name = N'testSchema', @level1type = N'TABLE', @level1name = N'table_name', @level2type = N'COLUMN', @level2name = N'Some_Column';
以與上述類似的方式定義您的表,按構建並解決錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.