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

Làm mới siêu dữ liệu trên các hàm người dùng t-SQL

câu trả lời của gbn là tốt nhất - nhưng khi bạn có SCHEMABINDING, điều này thường ngăn bạn thực hiện các thay đổi cơ bản mà không xóa SCHEMABINDING trước rồi thay thế nó khi tạo lại mô-đun. Bạn không thể sử dụng SCHEMABINDING nếu đối tượng của bạn tham chiếu đến các đối tượng bên ngoài cơ sở dữ liệu.

Nếu khó khăn này quá lớn, bạn không muốn hoặc không thể sử dụng SCHEMABINDING, thì hãy sử dụng sp_refreshsqlmodule trong một số loại quy trình thông thường mà bạn chạy để kiểm tra các mô-đun SQL của mình để tìm lỗi trước khi chúng thực sự được sử dụng (nó có thể được chạy trên bất kỳ chế độ xem phi cấu trúc nào, UDF, proc được lưu trữ, v.v.) là bạn của bạn.

Bạn có thể sử dụng cả hai kỹ thuật cùng nhau - bạn không thể (và không cần) chạy sp_refreshsqlmodule chống lại các đối tượng schemabound.

ví dụ:bạn chỉ có thể chạy nó trên các mô-đun sau:

SELECT *
FROM    INFORMATION_SCHEMA.ROUTINES
        WHERE   (
                 OBJECTPROPERTY(OBJECT_ID(QUOTENAME(ROUTINE_SCHEMA) + '.' + QUOTENAME(ROUTINE_NAME)), N'IsSchemaBound') IS NULL
                 OR OBJECTPROPERTY(OBJECT_ID(QUOTENAME(ROUTINE_SCHEMA) + '.' + QUOTENAME(ROUTINE_NAME)),
                                   N'IsSchemaBound') = 0
                )


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hạn chế kết nối SQL Server đối với một địa chỉ IP cụ thể

  2. Truy vấn chạy nhanh, nhưng chạy chậm trong thủ tục được lưu trữ

  3. Tác vụ dọn dẹp bảo trì SQL hoạt động nhưng không xóa

  4. Phiên bản tiêu chuẩn nén sao lưu SQL Server 2008

  5. Chọn 30 ngày qua với truy vấn sql