2008-09-19 28 views
5

tôi biết làm thế nào để thay đổi giản đồ của một bảng trong SQL server 2005:Làm thế nào để thay đổi tên schema của một bảng trong tất cả các thủ tục lưu trữ

ALTER SCHEMA NewSchama TRANSFER dbo.Table1 

Nhưng làm thế nào tôi có thể kiểm tra và/hoặc thay đổi các thủ tục lưu trữ sử dụng tên lược đồ cũ?

Xin lỗi: ý tôi là: Có các thủ tục được lưu trữ có tên lược đồ cũ của bảng trong sql của thủ tục được lưu trữ ... Làm cách nào tôi có thể chỉnh sửa tất cả các thủ tục được lưu trữ có dbo.Table1 trong phần thân của thủ tục ...

+0

Đây là một phép tái cấu trúc sẵn có trong SSDT mặc dù nó vẫn cần kiểm tra/thử nghiệm vì nó có thể bỏ sót các tham chiếu trong SQL động. –

Trả lời

0

Nhận danh sách các đối tượng phụ thuộc bằng cách nhấp chuột phải vào bảng trước khi bạn thay đổi giản đồ và sau đó xem những gì phụ thuộc vào bảng, tạo danh sách và sau đó thay đổi chúng. Tuy nhiên, luôn luôn có khả năng bạn sẽ bỏ lỡ một cái gì đó bởi vì nó có thể phá vỡ các phụ thuộc các bản ghi máy chủ SQL. Tuy nhiên, cách tốt nhất là tập lệnh cơ sở dữ liệu vào một tệp và sau đó thực hiện tìm kiếm tên bảng, tạo danh sách tất cả các sprocs mà nó cần được thay đổi và sau đó thêm chúng vào kịch bản lệnh để thay đổi lược đồ của bảng.

1
  • Sử dụng tác vụ> Tạo tập lệnh trong SSMS để cung cấp một loạt kịch bản lệnh Tạo Proc.
  • Sử dụng Tìm & Replace (Alt - H) để thay đổi 'Tạo' thành 'Alter'
  • Sử dụng F & R để thay đổi 'dbo.Table1' thành 'dbo.Table2'
  • Sau đó thi hành (F5) để sửa đổi tất cả SP bị ảnh hưởng.

Đơn giản nhưng hiệu quả.

+0

Đó là thay đổi tên bảng, câu hỏi là làm thế nào để thay đổi tên lược đồ cho các bảng .... – jlg

0

DECLARE @SearchObject VARCHAR (100)

SET @SearchObject = 'searchable_table_name' - thay đổi 'searchable_table_name' với tên bảng những gì bạn muốn tìm kiếm

CHỌN sc.name [Tìm kiếm Object], so.name [container Object],
TRƯỜNG HỢP so.xtype KHI 'U' THEN 'Table' khi 'P' THEN 'Stored Procedure' KHI 'F' THEN 'User Defined Function' ELSE 'khác' END là [Loại đối tượng vùng chứa]

TỪ sysobjects nên

INNER JOIN syscolumns sc ON so.id = sc.id

ĐÂU sc.name LIKE '%' + @SearchObject + '%' VÀ so.xtype IN ('U ', 'P', 'F') - U: Bảng, P: Stored Procedure, F: chức năng người dùng định nghĩa (UDF)

ORDER BY [container Object] ASC

- Hiển thị các thủ tục lưu trữ có chứa tên bảng được yêu cầu.

Chọn văn bản Từ syscomments đâu văn bản như '% từ' + @SearchObject + '%'

(Chọn id Từ sysobjects đâu type = 'P' và name = '')

- Hiển thị nội dung của một thủ tục lưu trữ cụ thể (tìm thấy từ trên cao)

sp_helptext --Exec 'DeleteAssetByID'

0

Ví dụ tôi đã tạo ra một báo cáo bảng, bởi schema dbo mặc định sẽ được gán cho nó, bây giờ nếu tôi muốn để thay đổi lược đồ của bảng Báo cáo, linh sam tly, tôi sẽ tạo ra sơ đồ mới có tên báo cáo:

CREATE SCHEMA Reporting 

sau đó tôi sẽ thực hiện dưới lệnh để thay đổi giản đồ của bảng báo cáo từ dbo để báo cáo:

ALTER SCHEMA Reporting TRANSFER dbo.Reports 

OR để hiểu rõ hơn:

ALTER SCHEMA 'newSchema' TRANSFER 'oldSchema'.'table' 
Các vấn đề liên quan