Si të riemroni një kolonë pa e dëmtuar SQL Databazën tuaj

Riemrimi i një kolone të një tabele ose një view-je nuk është dicka që një SQL Server zhvillues ka nevojë ta bëjë cdo ditë. Megjithatë, kur t’i vie koha, si mund të bëhet një gjë e tillë në mënyrë të lehtë dhe pa mundim?

Riemrimi i një kolone të vetme nuk është i vështirë. Për të riemruar kolonën TerritoryID në TerrID në tabelën Sales.SalesTerritory, ekzekutoni shprehjën si në vijim:

EXECUTE sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';

Problemi është se ju do të keni vërejtjën:

Caution: Changing any part of an object name could break scripts and stored procedures.

Kujdes: Ndryshimi i cilësdo pjesë të emrit të objektit mund të dëmtoj skriptat dhe store procedurat.

Vec kësaj, ndoshta mund të jetë edhe kjo vërejtje:

Object ‘Sales.SalesTerritory.TerritoryID’ cannot be renamed because the object participates in enforced dependencies.

Objekti ‘Sales.SalesTerritory.TerritoryID’ nuk mund të riemrohet sepse objekti mund të jetë pjesë e zbatimit të varësisë së objekteve.

Cka janë këto skripta të cilat do të dëmtohen?

Themi se ju keni një procedurë Sales.vTer që për referencë ka kolonën TerritoryID në tabelën Sales.SalesTerritory. Procedura sp_rename do të riemroj vetëm kolonën TerritoryID në tabelën Sales.SalesTerritory, por jo atë në procedurën Sales.vTer.

Prandaj, tabela Sales.SalesTerritory do të përmbajë kolonën TerrID por Store Procedura do ta thirr kolonën Sales.SalesTerritory.TerritoryID e cila nuk ekziston më. Skripta do të dëmtohet dhe ekzekutimi i saj do të dështoj.

Cka është zbatimi i varësisë?

Një varësi është e “zbatueshme” atëherë kur objekti referues është në një shprehjë të lidhur për skeme (schema-bound) të SQL. Ky mesazh paraqitet gjithashtu, nëse ka objekte të tjera që ju duhet t’i fshini me Drop operacionin dhe ta rikrijoni me emrin e ri të kolonës, në mënyrë që ta riemroni kolonën me sukses.

Si duhet gjetur Store Procedurat dhe objektet tjera të cilat do të prekën nga ndryshimi i emrit të kolonës

SSMS apo SQL Server Management Studio mund të gjurmoj varësitë nëpërmes opcionit të saj Vieë Dependencies. Ajo paraqet objektet që varën nga një objekt tjetër i zgjedhur, por ju ende duhet që të freskoni objektet që janë referencë e kolonës se riemruar, një nga një.

Për ta riemruar një kolonë duke përdorur sp_rename, ju duhet të:

  1. T’i gjeni të gjitha objektet e varuara që kan për referencë kolonën e tabelës/view-s
  2. Të hidhen apo të fshihen të gjitha zbatimet e varsisë së objekteve.
  3. Riemroni kolonën duke ekzekutuar sp_rename
  4. Rikrijoni të gjitha zbatimet e varësisë të cilat jan fshirë në hapin #2
  5. Nëse dëshironi të riemroni më shumë se 1 kolonë, përsëritni hapat nga 1 deri ne 4

Nëse nuk është një proces i knaqshëm, do t’iu bëjë që të hiqni dorë nga riemrimi, se sa të vazhdoni me të.

Si të riemroni një kolonë pa kaq shumë telashe?

ApexSQL Search mund t’iu ndihmoj. Është krejtësisht i lirë apo FREE për ta future në SSMS apo SQL Server Management Studio dhe Vistual Studio i cili mund të gjejë tekste në objektet e SQL databazave dhe të dhëna në tabela apo view të SQL databazave. Ajo ju lejon të ndryshoni tabela, view, store procedura, funksione, kolona, emra të parametrave dhe të skemave pa e thyer varësinë në mes tyre, përderisa në të mund të paraqiten të gjithë ndërvarësitë e objekteve në mënyrë grafike ose vizuele.

  1. Hapeni SQL Server Management Studio ose Visual Studio
  2. Në pjesën e Object Explorer/Server Explorer të anës së majtë, shfletoni kolonën e tabelës ose të view-s për të cilën dëshironi ta riemroni.
  3. Klikoni me klik të djathtë në kolonë dhe zgjedhni opcionin Safe rename nga menuja e ApexSQL Search:

  4. Për të parë ndryshimet të cilat do të ekzekutohen, klikoni në Generate preview në dritarën e dialogut Safe rename column
  5. Faqja Generated script paraqet skriptën e cila do të ekzekutohet për të riemruar kolonën.

  6. Hapeni faqën Warnings për të pa informacionin rreth problemeve potenciale të cilat mund të hasen gjatë procesit të riemrimit.

  7. Hapeni faqën Sequence për të shikuar të gjitha veprimet të cilat do të ekzekutohen gjatë riemrimit. Këto janë veprimet të cilat do të duhej që ju t’i bëni manualisht nëse ju do të përdorni procedurën sp_rename.

  8. Hapeni faqën Dependencies për të shikuar objektët që varën nga riemrimi i kolonës. Këto janë objektet të cilat në mënyrë automatike do të ndryshojnë duke mos i thyer apo dëmtuar skriptat. Nëse do të duhej të përdorni procedurën sp_rename, ju do të duhej që t’i gjeni manualisht ato dhe t’i ndryshoni.

  9. Nëse ju dëshironi që të bëni ndryshime në skriptë para se ta ekzekutoni atë, klikoni butonin Open. Skripta e gjeneruar do të hapet në editorin e SQL Server Management Studio ose në editorin e Visual Studio.

    Rishikoni, ndryshoni sipas nevojës dhe ekzekutoni skriptën duke klikuar Execute ose e ruani si fajll për përdorim të mëvonshëm.

  10. Për ta ekzekutuar skriptën ashtu si është, klikoni butonin Rename.

Riemrimi i një kolone mund të jetë i lehtë dhe FREE. Ju nuk keni nevojë që të analizoni tërë databazën e juaj dhe të kërkoni për objektet e varura. Përdorni ApexSQL Search për ta bërë një gjë të tillë. Ajo do të gjejë të gjitha objektet e varura, do të riemroj dhe do të fshijë – e – krijoj atëherë kur është e nevojshme, në mënyrë që të evitohet thyerja apo dëmtimi i skriptave.

Përkthyes: Dukagjin Maloku

October 20, 2015