sql-server - 在注册期间尝试将完整的表复制到另一个架构中
问题描述
我正在开发一个多租户应用程序我计划将表从默认模式(即 dbo)转移到另一个模式,我正在使用存储的 Proc 创建新模式,所有关系都在 dbo 中维护
USE [STAGING]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Dheeraj Singh
-- Create date: getdate
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[-old-sp_transfer_schema_on_signup]
-- Add the parameters for the stored procedure here
@NewSchema varchar(100)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
DECLARE @id INT
DECLARE @name NVARCHAR(100)
DECLARE @getid CURSOR
BEGIN TRY
BEGIN TRANSACTION SCHEDULEDELETE
SET @getid = CURSOR FOR select name from sys.Objects where sys.Objects.schema_id=1 and type in ('U','V')
OPEN @getid
WHILE 1=1
BEGIN
FETCH NEXT
FROM @getid INTO @name
IF @@FETCH_STATUS < 0 BREAK
exec( 'SELECT * INTO [' + @NewSchema + '].[' + @name + '] FROM dbo.[' + @name+ ']')
--EXEC stored_proc @varName=@id, @otherVarName='test', @varForName=@name
END
CLOSE @getid
DEALLOCATE @getid
COMMIT TRANSACTION SCHEDULEDELETE
PRINT 'X rows deleted. Operation Successful Tara.' --calculation cut out.
END TRY
BEGIN CATCH
IF (@@TRANCOUNT > 0)
BEGIN
ROLLBACK TRANSACTION SCHEDULEDELETE
PRINT 'Error detected, all changes reversed'
END
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_LINE() AS ErrorLine,
ERROR_MESSAGE() AS ErrorMessage
END CATCH
END
我所期望的是将所有表从 dbo 复制到新创建的模式,但是在此传输过程中它无法复制关系和键
解决方案
推荐阅读
- javascript - Node.js:将源文件放入其他文件夹时出现“找不到模块”错误
- listview - SwiftUI List:设置节标题高度?
- r - R中的线条颜色
- r - 如何在 R 中运行纵向序数逻辑回归
- node.js - CORS 策略已阻止来自来源:对预检请求的响应未通过访问控制检查:“访问控制允许来源”
- javascript - 在 Next.js (30s+) 的开发模式下加载页面非常慢,这可能是什么原因造成的?
- scala - Scala 2.13 迁移
- java - CS-Studio 4.4.1,Debian 10,启动错误:org.csstudio.logging.PluginLogListener (logging) - 无法为几个 jar 文件获取 PluginConverter
- python - 用open3d获取最近的相机点云簇
- php - Unable to connect to database using postman 我得到这个错误 "message": "1146 is not a valid HTTP return status code", 。我已经重新安装了 Xamp