You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求生成T-SQL脚本:创建指定Login、用户、库、架构及表并配置权限

T-SQL脚本实现指定创建操作

以下是可在SSMS中以sa身份执行的T-SQL脚本,满足所有要求并解决指定错误:

-- 1. 创建登录John(避免重复创建报错)
IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE name = N'John')
BEGIN
    CREATE LOGIN [John] WITH PASSWORD=N'12345', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
END
GO

-- 2. 创建数据库JohnDatabase,初始所有者设为John
IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = N'JohnDatabase')
BEGIN
    CREATE DATABASE [JohnDatabase] WITH OWNER = [John]
END
GO

USE [JohnDatabase]
GO

-- 3. 创建架构JohnSchema
IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = N'JohnSchema')
BEGIN
    CREATE SCHEMA [JohnSchema]
END
GO

-- 4. 创建数据库用户DbUser101,指定默认架构为JohnSchema
IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'DbUser101')
BEGIN
    CREATE USER [DbUser101] WITHOUT LOGIN WITH DEFAULT_SCHEMA=[JohnSchema]
END
GO

-- 映射登录John到当前数据库用户(避免「登录名已存在对应账户」错误)
IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'John' AND type_desc = 'SQL_USER')
BEGIN
    CREATE USER [John] FOR LOGIN [John] WITH DEFAULT_SCHEMA=[dbo]
END
GO

-- 调整权限:收回John的数据库所有者权限,仅授予指定表操作权限
ALTER AUTHORIZATION ON DATABASE::[JohnDatabase] TO [sa];
GRANT CREATE TABLE, SELECT, INSERT, UPDATE, DELETE ON SCHEMA::[JohnSchema] TO [John];
GO

-- 5. 模拟John登录创建表JohnTable
EXECUTE AS LOGIN = N'John';
GO
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = N'JohnTable' AND schema_id = SCHEMA_ID(N'JohnSchema'))
BEGIN
    CREATE TABLE [JohnSchema].[JohnTable]
    (
        ID INT PRIMARY KEY IDENTITY(1,1),
        Column1 NVARCHAR(50) NULL,
        Column2 INT NULL
    )
END
GO
REVERT;
GO

关键说明

  • 所有创建操作前加入IF NOT EXISTS判断,避免重复创建引发的报错。
  • 通过先将数据库所有者设为John再转回sa,最后授予精准权限的方式,既满足“数据库归John所有”的要求,又限制John仅拥有表的创建、读写、修改权限,无额外权限。
  • 创建数据库用户John时先检查是否已存在,解决「登录名已存在其他用户名对应的账户」错误,避免跨数据库用户映射冲突。
  • 使用EXECUTE AS LOGIN = 'John'模拟John身份创建表,贴合场景要求。

内容的提问来源于stack exchange,提问作者Gigi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 04:55:30