Değişiklik yönetişimiChange governance

Database Change GovernanceDatabase Change Governance

Ürün üzerinden üretime giden her betik aynı kapıdan geçer: doğrulama, risk bandı, politika, onay, çalıştırma ve denetim. Ürün veritabanına başka yoldan bağlanmayı engellemez; bunun için kişisel üretim yetkilerinin kaldırılması ve izleme kayıtlarıyla eşleştirme gerekir. Karar kuralı yazılıdır, kanıt işin kendisinden çıkar. Every script sent to production through the product goes through the same gate: validation, risk band, policy, approval, execution and audit. The product does not block other routes into the database; that takes removing personal production rights and matching against monitoring records. The decision rule is written down and the evidence comes out of the work itself.

SQL Server PostgreSQL Oracle

Değişiklik yönetimi ile değişiklik yönetişimi arasındaki farkChange management and change governance are not the same thing

Değişiklik yönetimi bir değişikliğin nasıl planlanacağını, taşınacağını ve yayına alınacağını düzenler. Sorusu şudur: bu iş üretime nasıl gider? Bilet sistemleri, dağıtım hatları ve şema göç araçları bu soruyu cevaplar.Change management organises how a change is planned, carried and released. Its question is how the work gets to production. Ticketing systems, delivery pipelines and schema migration tools answer that question.

Değişiklik yönetişimi ise o işin geçmesine izin verilip verilmeyeceğini ve geçtiğinin nasıl kanıtlanacağını düzenler. Sorusu şudur: bu iş hangi kurala göre değerlendirildi, kim izin verdi ve çalışan metnin onaylanan metin olduğunu neye dayanarak söylüyoruz? Üç bileşeni vardır ve üçü de yazılı olmak zorundadır: kural, kapı ve kanıt.Change governance organises whether the work is allowed through and how you prove that it was. Its question is which rule assessed the work, who allowed it, and on what basis you claim the text that ran is the text that was approved. It has three components and all three must be written down: the rule, the gate and the evidence.

İki disiplin birbirinin alternatifi değildir. SQL Change Guard yönetim araçlarınızın yerine geçmez; onların cevaplamadığı ikinci soruyu cevaplar. Veritabanı değişikliği ile üretim verisine erişimi tek çatı altında ele alan bu yaklaşımı Database Operations Governance olarak adlandırıyoruz.The two disciplines are not alternatives. SQL Change Guard does not replace your management tools; it answers the second question they leave open. We call the approach that brings database change and production data access under one roof Database Operations Governance.

Bir değişiklik talebinin yoluThe path of a change request

1 TalepRequest Bir talep birden fazla betik taşıyabilir. Birden fazla hedef sunucu yalnız sorgu sonucu talebinde seçilebilir, çünkü sunucular arasında ortak transaction yoktur. Bilet numarası zorunlu tutulabilir ve biçimi düzenli ifadeyle doğrulanır. A request can carry several scripts. Several target servers can be chosen only on a query result request, because there is no shared transaction across servers. A ticket number can be made mandatory and its format is checked with a regular expression.
2 DoğrulamaValidation Betik, hedef sunucunun veritabanı tipine ait ayrıştırıcıyla çözümlenir. Metin arama değil, gerçek dilbilgisi analizi yapılır. The script is parsed with the parser of its target database type. This is real grammar analysis, not text searching.
3 RiskRisk Tetiklenen kuralların en yüksek derecesi talebin bandını belirler. Bulgular toplanmaz veya ortalanmaz. The highest tier among the triggered rules sets the request band. Findings are not summed or averaged.
4 PolitikaPolicy Sunucuya, ortama ve talep tipine uyan politika seçilir. Adımlar bu politikadan üretilir. The policy matching the server, the environment and the request type is selected. The steps come from that policy.
5 OnayApproval Her adımı, gereken rol seviyesindeki bir kullanıcı kapatır. Kilitli adım hiçbir atlama kuralıyla geçilemez. Each step is closed by a user at the required role level. A locked step cannot be passed by any skip rule.
6 BildirimNotification Sırası gelen onay adımı, onay, red ve çalıştırma sonucu ilgili kişilere bildirilir. Gönderimler kuyruğa alınır ve kaydı tutulur. The approval step that is now due, the approval, a rejection and the execution result are notified to the people concerned. Sends are queued and recorded.
7 ÇalıştırmaExecution Betiği uygulama çalıştırır. Sonuç, süre, etkilenen satır ve hata mesajı kaydedilir. The application runs the script. Result, duration, affected rows and any error message are recorded.
8 DenetimAudit Her adım yalnız ekleme yapılabilen (append-only) denetim kaydına yazılır ve talep bazlı kanıt dosyasına girer. Every step goes into an append-only audit record and into the per request evidence file.
DoğrulamaValidation

Betik ne zaman durdurulurWhen a script is stopped

Üç ayrı fren vardır ve üçü farklı sertliktedir.There are three brakes and they are not equally hard.

Sözdizimi hatasıSyntax error

Betik ayrıştırılamıyorsa talep hiçbir koşulda kaydedilmez. Bu fren kapatılamaz.If the script cannot be parsed, the request is never saved. This brake cannot be turned off.

Kaydı engelleyen kuralSave blocking rule

Kural setinde "kaydı engeller" işaretli bir standart tetiklenirse kayıt oluşmaz. Kurulumda yedi kural bu şekilde işaretlidir; örneğin WHERE içermeyen UPDATE ve DELETE, betik içinde elle transaction açma ya da kapatma.If a standard marked "blocks save" is triggered, no record is created. Seven rules ship with this flag, for example UPDATE and DELETE without WHERE, and opening or closing a transaction by hand inside the script.

Onay isteyen bulguFinding that needs confirmation

Yüksek dereceli diğer bulgularda kullanıcıya "riskleri gördüm" onayı gösterilir ve talep ancak ikinci gönderimde kaydedilir.For other high tier findings the user is shown an acknowledgement, and the request is only saved on the second submission.

Kural seti kurumun elindedir. Kurulumla seksen sekiz maddelik bir SQL standardı kataloğu gelir. Her biri açılıp kapatılabilir, önem derecesi değiştirilebilir ve hangi veritabanı tiplerinde geçerli olduğu belirlenebilir. Ekran: Ayarlar, SQL Standartları. The rule set belongs to you. A catalogue of eighty eight SQL standards ships with the product. Each can be switched on or off, its tier changed, and the database types it applies to selected. Screen: Settings, SQL Standards.

RiskRisk

Risk bandı nasıl belirlenirHow the risk band is decided

Her SQL standardı beş dereceden birini taşır: Info, Low, Medium, High, Critical. Bir talebin bandı, o talepte tetiklenen kuralların en yüksek derecesidir.

Every SQL standard carries one of five tiers: Info, Low, Medium, High, Critical. A request's band is the highest tier among the rules it triggered.

Ortalama alınmaz ve puanlar toplanmaz. Bunun sebebi basittir: elli küçük bulgunun ortalaması, tek bir kritik bulguyu gizler. En kötü durum yaklaşımı bu gizlenmeyi engeller.

Nothing is averaged and no points are summed. The reason is simple: the average of fifty small findings hides a single critical one. A worst case approach prevents that.

Ekranda ayrıca 0 ile 100 arasında bir sayı görürsünüz. Bu sayı bandın okunur karşılığıdır ve hiçbir kapı kararında kullanılmaz. Karar bandın ve kural bayraklarının işidir.

The screen also shows a number between 0 and 100. That number is a readable projection of the band and is used in no gate decision. Decisions belong to the band and the rule flags.

Asla atlanamaz kurallar. Sekiz kural kurulumda bu işaretle gelir: kritik nesne silme, kritik nesneye erişim, kritik nesnede şema değişikliği, işletim sistemi komutu çalıştırma, yetki değişikliği, bağlı sunucu kullanımı ve betik içinde elle COMMIT ya da ROLLBACK yazılması. Biri tetiklendiğinde makine talebi kendi başına çalıştıramaz ve o kurala bağlı onay adımı atlanamaz. Rules that can never be skipped. Eight rules ship with this flag: dropping a critical object, accessing a critical object, schema change on a critical object, running an operating system command, permission changes, linked server usage and a manual COMMIT or ROLLBACK written inside the script. When one is triggered, the machine cannot execute the request on its own and the approval step tied to that rule cannot be skipped.

PolitikaPolicy

Onay adımları nasıl oluşurHow approval steps are generated

Onay bir alışkanlık değil, yazılı bir kuraldır. Kural talep kaydedilirken talebe dondurulur.Approval is not a habit. It is a written rule, and it is frozen onto the request at save time.

Hangi politika uygulanırWhich policy applies

Aday politika şu özgüllük sırasıyla aranır: belirli sunucu, sonra ortam, sonra genel. Aynı kademede birden çok aday varsa öncelik değeri karar verir. Çok sunuculu sorgu talebinde her sunucu için ayrı çözüm yapılır ve en çok onay adımı üreten politika kazanır.Candidate policies are searched in this order of specificity: a specific server, then the environment, then global. When several candidates sit at the same level, the priority value decides. On a multi server query request each server is resolved separately and the policy that produces the most approval steps wins.

Bir adımın altı kaldıracıThe six levers on a step

Onaylayan rol; belirli kural anahtarlarıyla tetikleme; risk bandı eşiğiyle tetikleme; düşük bantta atlama; talep sahibinin rolü yeterliyse atlama; ve adımı her koşulda bekleten kilit.The approver role; triggering on specific rule keys; triggering at a risk band threshold; skipping at a low band; skipping when the requester's own role is high enough; and a lock that makes the step wait under all conditions.

En sık karıştırılan nokta. Bir adımı koşullu yapan yalnız iki alan vardır: kural anahtarı ve bant eşiği. Koşullu bir adım tetiklendiğinde, talebi açan kişinin rolü onaylayan rolünü karşılıyor diye ya da bant düşük diye atlanmaz; yalnız adıma açıkça yazılmış rol atlaması işleyebilir, adım kilitliyse o da işlemez. Buna karşılık koşulsuz bir taban adım, kendi talebini onaylama ayarı açıkken, talebi açan kişinin rolü onaylayan rolüne eşit veya üstündeyse atlanır. The point most often misread. Only two fields make a step conditional: the rule key and the band threshold. Once a conditional step is triggered it is not skipped because the requester's role meets the approver role, nor because the band is low; only a role skip written explicitly on the step can apply, and not even that if the step is locked. A plain base step, by contrast, is skipped when the requester's own role is at or above the approver role, provided self approval is allowed.

Görevler ayrılığıSeparation of duties

Kendi talebini onaylamaApproving your own request

Kapatıldığında talep sahibi kendi talebini ne onaylayabilir ne de çalıştırabilir.When switched off, a requester can neither approve nor execute their own request.

Onaylayan çalıştıramazApprover cannot execute

Kapatıldığında bir adımı onaylayan kişi aynı talebi çalıştıramaz.When switched off, whoever closed a step cannot execute that same request.

Farklı onaylayanDistinct approver

Açıldığında bir kişi aynı talepte yalnız tek bir adımı kapatabilir.When switched on, one person can close only one step on the same request.

Kurulum varsayılanında görevler ayrılığı gevşektir: talep sahibi kendi talebini onaylayıp çalıştırabilir ve onaylayan çalıştırabilir; Yönetişim Kurulum Kontrolü ekranı bunları ayrı satırlarda gösterir. Bu üç ayarın etkin değeri talep kaydedilirken dondurulur. Sonradan yapılan değişiklik, karara bağlanmış talepleri geriye dönük değiştirmez. The installation default is permissive: a requester may approve and execute their own request and an approver may execute; the Governance Setup Check screen shows each of these on its own line. The effective value of these three settings is frozen when the request is saved. A later change does not rewrite requests that were already decided.

ÇalıştırmaExecution

Onaydan sonra ne olurWhat happens after approval

Elle veya zamanlanmış çalıştırmaManual or scheduled execution

Yetkili bir kullanıcı talebi çalıştırır ya da ileri bir zamana kurar. Sunucu bazında otomatik çalıştırma açılabilir; ancak asla atlanamaz bir kural tetiklendiyse makine çalıştırmaz, bir insanın düğmeye basması gerekir.An authorised user executes the request or schedules it for later. Automatic execution can be enabled per server, but if a never skip rule was triggered the machine will not run it and a person has to press the button.

Geri alma ve izole denemeRollback and sandbox

Ürün betikten geri alma betiği üretebilir. Sunucu bazında "geri alma olmadan çalıştırılamaz" kuralı konabilir. Betik, üretim dışı bir sunucuda, sonunda geri alınan bir transaction içinde denenebilir ve sonuç talebe iliştirilir. Bu deneme üretim koşullarının tam benzetimi değildir; Oracle'da DDL, DCL ya da TRUNCATE içeren talep denenemez.The product can generate a rollback script from the original. A server can be marked so that nothing runs without one. A script can also be tried on a non production server inside a transaction that is rolled back at the end, and the result is attached to the request. The trial is not a full simulation of production; on Oracle a request containing DDL, DCL or TRUNCATE cannot be tried.

Kapsamı açık söyleyelim. Otomatik üretim nesne tanımı değişiklikleri içindir: tablo, kolon, indeks, görünüm, saklı yordam ve benzerlerinde sunucudaki güncel tanım okunup ters yönlü betik hazırlanır. Veri değiştiren ifadelerde (INSERT, UPDATE, DELETE, MERGE, TRUNCATE) ve yordam çağrılarında (EXEC) eski satır değerleri betikten çıkarılamaz ve ürün bugün çalıştırmadan önce etkilenecek satırların kopyasını almaz. Bu durumda geri alma betiği elle hazırlanıp talebe iliştirilir ve sunucu ayarı bunu zorunlu tutabilir. Bilinen sınırlar: silinen bir tablo katalogdan yeniden kurulurken SQL Server ve PostgreSQL'de hesaplanan kolonun ifadesi gelmez, kolon düz kolon olarak kurulur (Oracle'da bu kayıp yoktur); tablonun tetikleyicileri de yeniden kurulmaz. Üretilen betiğin sonunda kapsam dışı kalanlar not olarak yazar ve betik onaydan önce gözden geçirilmelidir.Let us be explicit about the scope. Automatic generation covers object definition changes: for tables, columns, indexes, views, procedures and the like, the current definition is read from the server and the reversing script is prepared. For statements that change data (INSERT, UPDATE, DELETE, MERGE, TRUNCATE) and for procedure calls (EXEC) the previous row values cannot be derived from the script, and today the product does not copy the affected rows before execution. In those cases the rollback script is written by hand and attached to the request, and a server setting can make that mandatory. Known limits: when a dropped table is rebuilt from the catalogue, the expression of a computed column is not carried over on SQL Server and PostgreSQL and the column comes back as a plain column (Oracle has no such loss); the table's triggers are not rebuilt either. The generated script lists what was left out in a note at the end, and the script should be reviewed before approval.

Sürüm paketiRelease package

Birden çok talep tek pakette toplanıp sırayla çalıştırılabilir. Pakete alınan talep artık paketin denetimindedir; tek tek düzenleme ve çalıştırma kapanır.Several requests can be gathered into one package and run in order. A request inside an active package is governed by the package; editing and running it on its own is disabled.

Acil durumEmergency

Acil talep ayrı bir acil durum politikasına yönlendirilir. Gerekçe zorunludur, acil yol yalnız tanımlı bir rol seviyesinden itibaren açılır ve acil politikanın en az bir atlanamaz onay adımı içermesi zorunludur.An emergency request is routed to a separate emergency policy. A justification is mandatory, the emergency route opens only from a defined role level upward, and an emergency policy must contain at least one non skippable approval step.

EkranlarScreens

Değişiklik talebi ekranı: betik, doğrulama bulguları ve risk bandı
Talep ve doğrulamaRequest and validation Betik, tetiklenen kurallar ve satır numaraları. The script, the rules it triggered and the line numbers.
Sunucudaki güncel tanım penceresi: çalıştırılacak ifade üstte, nesnenin hedef sunucudaki o anki tanımı altta
Sunucudaki hâl ile karşılaştırmaCompared against the server Üstte çalıştırılacak ifade, altta nesnenin hedef sunucudaki o anki tanımı. Karşılaştırma depodaki dosyayla değil, sunucudan o anda okunan tanımla yapılır; nesnenin tamamını değiştirmeyen ifadelerde satır satır fark yerine güncel tanım tek panelde gösterilir. The statement to be executed on top, the object's current definition on the target server below. The comparison is made against the definition read from the server at that moment, not a file in a repository; for statements that do not replace the whole object, the current definition is shown in a single pane instead of a line by line diff.
Talep ekranı, etkilenen nesneler sekmesi: uygulanan onay politikası, her adımın işletilme durumu ve satır sonundaki fark gösterme düğmesi
Etkilenen nesneler ve uygulanan politikaAffected objects and the policy in force Betiğin dokunduğu nesneler, hangi onay politikasının uygulandığı ve bir adım işletilmiyorsa gerekçesi. The objects the script touches, which approval policy applied, and the reason whenever a step does not run.
SQL standartları ekranı: kural listesi, önem derecesi ve asla atlanamaz işareti
SQL standartlarıSQL standards Kural kataloğu: her kuralın derecesi ve atlanamaz işareti. The rule catalog with each rule tier and never skip flag.
Onay politikaları ekranı: adımlar, onaylayan roller ve tetikleme koşulları
Onay politikalarıApproval policies Adımlar, roller ve tetikleme koşulları. Steps, roles and trigger conditions.
Talep listesi ekranı: durum, risk bandı ve bekleyen onay adımları
Talep listesiRequest list Durum, band ve bekleyen adımlar. Status, band and pending steps.
Parametreler ekranı, görevler ayrılığı sekmesi: onaylayan çalıştırabilir mi ve kendi talebini onaylayabilir mi ayarları
Görevler ayrılığı ayarlarıSegregation of duties settings Onaylayan çalıştırabilir mi, kendi talebini onaylayabilir mi. May the approver execute, may the requester approve their own.
Sürüm paketleri ekranı: pakete alınan onaylı talepler, çalıştırma sırası ve bağımlılıklar
Sürüm paketleriRelease packages Onaylı talepler, çalıştırma sırası ve aralarındaki bağımlılık. Approved requests, the execution order and the dependencies between them.

DevamıNext