更改数据库名称时 存储过程的数据库名称如何改变

在 SQL Server 中,当你更改数据库名称时,存储过程中的 USE [big_data] 语句不会自动更改。你需要手动更新所有引用旧数据库名称的存储过程。

若要修改存储过程中的数据库引用,可以按照以下步骤操作:

  1. 首先,使用 ALTER DATABASE 语句更改数据库名称:
  2. ALTER DATABASE big_data MODIFY NAME = big_data_test;
  1. 然后,找出所有引用旧数据库名称(big_data)的存储过程,并使用 sp_rename 或直接编辑存储过程内容来更新 USE 语句:
复制代码
   sql
   -- 查找引用 big_data 的存储过程
   SELECT DISTINCT so.name 
   FROM sys.sql_modules sm 
   JOIN sys.objects so ON sm.object_id = so.object_id
   WHERE sm.definition LIKE N'%big_data%';

   -- 更新存储过程
   DECLARE @SQL NVARCHAR(MAX);
   SELECT @SQL = STRING_AGG('ALTER PROCEDURE ' + QUOTENAME(SCHEMA_NAME(so.schema_id)) + '.' + QUOTENAME(so.name) + CHAR(13) + CHAR(10) 
       + 'AS' + CHAR(13) + CHAR(10) 
       + REPLACE(sm.definition, 'USE [big_data]', 'USE [big_data_test]', 1), CHAR(13) + CHAR(10) + ';')
   FROM sys.sql_modules sm 
   JOIN sys.objects so ON sm.object_id = so.object_id
   WHERE sm.definition LIKE N'%big_data%';
   EXEC sp_executesql @SQL;

注意:上述示例使用了 SQL Server 2017 及更高版本支持的 STRING_AGG 函数。如果你使用的是较早版本的 SQL Server,可能需要采用其他方法(如使用 CURSOR 或 WHILE 循环)来逐个更新存储过程。

请根据实际情况调整代码,并在执行前备份数据库和相关对象,以防万一。

相关推荐
ACP广源盛1392462567316 分钟前
WAIC2026 国产算力浪潮下@ACP#IX8024 在算力矩阵中的定位与落地场景
大数据·数据库·人工智能·嵌入式硬件·线性代数·矩阵
snow@li21 分钟前
MySQL:库表设计完整规范与实战方案
数据库·mysql
ClouGence23 分钟前
数据库管理工具 CloudDM 4.1.0 发布,支持达梦、Cloudberry
数据库·开源
小白勇闯网安圈41 分钟前
Django 模板复用、ORM 查询与多对多关系
数据库·python·django
TELL5211 小时前
帮我生成对应的sql 以及数据库-deepseek提示词
数据库·sql
能年玲奈喝榴莲牛奶1 小时前
系统规划与管理师-第一章-考点记忆
大数据·数据库·软考·系统规划与管理师·系规
SatanII2 小时前
mariadb
数据库·mariadb
大千UI工场2 小时前
时序数据库对数字孪生的作用
数据库·ui·时序数据库·前端开发·b端管理系统
Tongzhi20262 小时前
通芝科技无感考勤一体机:软硬一体,开箱即用
数据结构·数据库·科技·算法·均值算法·数据库开发
这就是佬们吗3 小时前
向量数据库选型与实战:从原理到生产环境的完整指南
数据库