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

Bagaimana cara menggunakan variabel untuk nama database di T-SQL?

Masukkan seluruh skrip ke dalam string templat, dengan placeholder {SERVERNAME}. Kemudian edit string menggunakan:

SET @SQL_SCRIPT = REPLACE(@TEMPLATE, '{SERVERNAME}', @DBNAME)

lalu jalankan dengan

EXECUTE (@SQL_SCRIPT)

Sulit dipercaya bahwa, selama tiga tahun, tidak ada yang memperhatikan bahwa kode saya tidak berfungsi !

Anda tidak dapat EXEC beberapa batch. GO adalah pemisah batch, bukan pernyataan T-SQL. Penting untuk membuat tiga string terpisah, lalu ke EXEC masing-masing setelah substitusi.

Saya kira seseorang dapat melakukan sesuatu yang "pintar" dengan memecah string templat tunggal menjadi beberapa baris dengan membelah GO; Saya telah melakukannya dalam kode ADO.NET.

Dan dari mana saya mendapatkan kata "SERVERNAME"?

Berikut beberapa kode yang baru saja saya uji (dan yang berfungsi):

DECLARE @DBNAME VARCHAR(255)
SET @DBNAME = 'TestDB'

DECLARE @CREATE_TEMPLATE VARCHAR(MAX)
DECLARE @COMPAT_TEMPLATE VARCHAR(MAX)
DECLARE @RECOVERY_TEMPLATE VARCHAR(MAX)

SET @CREATE_TEMPLATE = 'CREATE DATABASE {DBNAME}'
SET @COMPAT_TEMPLATE='ALTER DATABASE {DBNAME} SET COMPATIBILITY_LEVEL = 90'
SET @RECOVERY_TEMPLATE='ALTER DATABASE {DBNAME} SET RECOVERY SIMPLE'

DECLARE @SQL_SCRIPT VARCHAR(MAX)

SET @SQL_SCRIPT = REPLACE(@CREATE_TEMPLATE, '{DBNAME}', @DBNAME)
EXECUTE (@SQL_SCRIPT)

SET @SQL_SCRIPT = REPLACE(@COMPAT_TEMPLATE, '{DBNAME}', @DBNAME)
EXECUTE (@SQL_SCRIPT)

SET @SQL_SCRIPT = REPLACE(@RECOVERY_TEMPLATE, '{DBNAME}', @DBNAME)
EXECUTE (@SQL_SCRIPT)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Fungsi vs Prosedur Tersimpan

  2. Bisakah saya memiliki kunci asing yang mereferensikan kolom dalam tampilan di SQL Server?

  3. Cara Menautkan Access Database ke SQL Server di Access 2016

  4. Bagaimana menjalankan prosedur tersimpan di sql server setiap jam?

  5. Alat Pemulihan SQL Terbaik Untuk 2020 untuk Memulihkan Basis Data SQL Penting