Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server:Periksa referensi saat mengubah tanda tangan fungsi/prosedur

Anda tidak dapat menambahkan pemicu ke tabel sistem, tetapi Anda dapat membuat pemicu DDL yang akan diaktifkan pada pernyataan ALTER PROC - contoh:

ALTER TRIGGER DDL_PROC
ON DATABASE
FOR ALTER_PROCEDURE
AS
DECLARE @data XML, @ObjectName sysname, @ParamCount int
SET @data = EVENTDATA()
SET @ObjectName = @data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'sysname')

PRINT 'You have changed procedure: ' + @ObjectName
SELECT @ParamCount = COUNT(*) FROM sys.parameters
WHERE object_id = OBJECT_ID(@ObjectName)
RAISERROR('This procedure now has %i parameter(s)',0,0,@ParamCount)
GO

Saya tidak yakin bagaimana cara mendapatkan daftar parameter sebelumnya atau jika memungkinkan - ada yang tahu?

Saya setuju dengan saran Charles untuk membuat parameter baru opsional jika memungkinkan - kode yang ada tidak akan rusak dan Anda hanya perlu menemukan referensi jika Anda harus tambahkan parameter ke panggilan.

Membuat skrip database sepertinya masih jauh. Permintaan sederhana seperti berikut ini akan menemukan semua referensi ke proc Anda (dalam database Anda):

SELECT so.name, so.type_desc
FROM sys.all_objects so
    JOIN sys.all_sql_modules sm ON so.[object_id] = sm.[object_id]
WHERE sm.[definition] LIKE '%<proc name>%'

Ini adalah hal yang sama, tetapi juga akan berfungsi di versi SQL server sebelumnya:

SELECT so.name, so.type
FROM syscomments sc
    JOIN sysobjects so ON sc.id = so.id
where text like '%<proc name>%'

Semoga membantu,

MDD



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tabel Pivot Dinamis di SQL Server

  2. Waktu Pengumpulan Alarm Awan Spotlight

  3. Periksa apakah Objek adalah Kunci Utama dengan OBJECTPROPERTY() di SQL Server

  4. Apakah Kunci Utama diperlukan di SQL Server?

  5. Cara Membuat Script Untuk Mengaktifkan Semua Batasan Kunci Asing di Database SQL Server - Tutorial SQL Server / TSQL Bagian 78