Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách thay đổi lược đồ của tất cả các bảng, dạng xem và các thủ tục được lưu trữ trong MSSQL

Có, có thể.

Để thay đổi lược đồ của một đối tượng cơ sở dữ liệu, bạn cần chạy tập lệnh SQL sau:

  ALTER SCHEMA NewSchemaName CHUYỂN NHƯỢNG CũSchemaName.ObjectName  

Trong đó ObjectName có thể là tên của một bảng, một dạng xem hoặc một thủ tục được lưu trữ. Vấn đề dường như là nhận được danh sách tất cả các đối tượng cơ sở dữ liệu với một tên shcema đã cho. Rất may, có một bảng hệ thống tên là sys.Objects lưu trữ tất cả các đối tượng cơ sở dữ liệu. Truy vấn sau sẽ tạo tất cả các tập lệnh SQL cần thiết để hoàn thành tác vụ này:

  SELECT 'ALTER SCHEMA NewSchemaName TRANSFER [' + SysSchemas.Name + ']. [' + DbObjects.Name + '];' FROM sys.Objects DbObjectsINNER JOIN sys.Schemas SysSchemas ON DbObjects.schema_masid =SysSchema_masid. schema_idWHERE SysSchemas.Name ='OldSchemaName'AND (DbObjects.Type IN (' U ',' P ',' V '))  

Trong đó loại "U" biểu thị bảng người dùng, "V" biểu thị các chế độ xem và "P" biểu thị các thủ tục được lưu trữ.

Chạy đoạn mã trên sẽ tạo ra các lệnh SQL cần thiết để chuyển các đối tượng từ một lược đồ này sang một lược đồ khác. Một cái gì đó như thế này:

 

Giờ đây, bạn có thể chạy tất cả các truy vấn đã tạo này để hoàn tất thao tác chuyển.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:xuất truy vấn dưới dạng tệp .txt

  2. Làm cách nào để tôi có thể sắp xếp chung một cột 'Số phiên bản' bằng cách sử dụng truy vấn máy chủ SQL

  3. Entity Framework:Đã có một DataReader mở được liên kết với Lệnh này

  4. Trả lại ID được chèn lần cuối mà không cần sử dụng truy vấn thứ hai

  5. Tách các giá trị được phân tách bằng dấu phẩy trong các cột thành nhiều hàng trong Sql Server