Lai skripts būtu noderīgs, ir svarīgi, ka kolonnas nosaukums nozīmē pilnīgi vienu un to pašu visās vietās, kur šis nosaukums izmantots. Tātad, piemēram, 'CustomerID' var būt 20 tabulās, bet nekad nebūs tā, ka vienā tabulā 'CustomerID' ir atslēgas lauks uz vienu tabulu, kamēr citā vietā atslēgas lauks uz citu tabulu..
Skripts (iet cauri visām datu bāzes tabulām un, ja tabulā ir kolonna ar norādīto nosaukumu, pārsauc to):
Declare @NewColumName nvarchar(50)Papildināts:
Declare @OldColumName nvarchar(50)
-- Ievadam kolonnu nosaukumus šeit!!!
Set @OldColumName = ''
Set @NewColumName = ''
Declare @com as NVarChar(1000)
Set @com =
'
IF (Select Count(*) From sys.Columns Where object_id = OBJECT_ID(''?'') And Name = ''' + @OldColumName + ''') > 0
Begin
print ''Mainīts nosaukums tabulā ?''
EXEC sp_rename ''?.' + @OldColumName + ''', ''' + @NewColumName + ''', ''COLUMN''
End
'
print 'Izmaiņas: '
EXECUTE sp_msForEachTable @com;
Un radās vajadzība arī datu tipus pamainīt, tur tieši tā pati ideja (starp citu, es šos abus skriptus ieliku divās procedūrās, man vismaz tas process tīri labi patīk):
Declare @ColumName nvarchar(50)
Declare @AlterStatement nvarchar(500)
Set @ColumName = 'HelloColumn'
Set @AlterStatement = 'Alter Column HelloColumn Date' --piemērs
Declare @com as NVarChar(1000)
Set @com =
'
IF (Select Count(*) From sys.Columns Where object_id = OBJECT_ID(''?'') And Name = ''' + @ColumName + ''') > 0
Begin
print ''Mainīts tips tabulā ?''
Alter Table ?
' + @AlterStatement + '
End
'
print 'Izmaiņas: ';
Exec sp_msForEachTable @com;
Nav komentāru:
Ierakstīt komentāru