From 95e8b7c5e61ee3cc7473eeced685e7d31a1e4b88 Mon Sep 17 00:00:00 2001 From: Pieter Date: Tue, 15 Feb 2022 15:52:38 +0100 Subject: [PATCH] Setup Demo --- .../sql-ledger/azure-sql-database/README.md | 159 ++++++++ ...t-to-server-connection-properties-page.png | Bin 0 -> 17996 bytes .../img/ssms-explorer-select-database.png | Bin 0 -> 64781 bytes .../azure-sql-database/img/web-app.png | Bin 0 -> 107343 bytes .../setup/CreateDatabaseSchema.sql | 194 +++++++++ .../setup/PopulateDatabase.sql | 374 ++++++++++++++++++ .../setup/azuredeploy.bicep | 187 +++++++++ .../azure-sql-database/setup/setup.ps1 | 118 ++++++ .../tsql-scripts/GetEmployeeLedgerEntries.sql | 13 + .../tsql-scripts/ListAllEmployees.sql | Bin 0 -> 242 bytes .../tsql-scripts/UpdateSalary.sql | 2 + 11 files changed, 1047 insertions(+) create mode 100644 samples/features/security/sql-ledger/azure-sql-database/README.md create mode 100644 samples/features/security/sql-ledger/azure-sql-database/img/ssms-connect-to-server-connection-properties-page.png create mode 100644 samples/features/security/sql-ledger/azure-sql-database/img/ssms-explorer-select-database.png create mode 100644 samples/features/security/sql-ledger/azure-sql-database/img/web-app.png create mode 100644 samples/features/security/sql-ledger/azure-sql-database/setup/CreateDatabaseSchema.sql create mode 100644 samples/features/security/sql-ledger/azure-sql-database/setup/PopulateDatabase.sql create mode 100644 samples/features/security/sql-ledger/azure-sql-database/setup/azuredeploy.bicep create mode 100644 samples/features/security/sql-ledger/azure-sql-database/setup/setup.ps1 create mode 100644 samples/features/security/sql-ledger/azure-sql-database/tsql-scripts/GetEmployeeLedgerEntries.sql create mode 100644 samples/features/security/sql-ledger/azure-sql-database/tsql-scripts/ListAllEmployees.sql create mode 100644 samples/features/security/sql-ledger/azure-sql-database/tsql-scripts/UpdateSalary.sql diff --git a/samples/features/security/sql-ledger/azure-sql-database/README.md b/samples/features/security/sql-ledger/azure-sql-database/README.md new file mode 100644 index 00000000..cd6028c6 --- /dev/null +++ b/samples/features/security/sql-ledger/azure-sql-database/README.md @@ -0,0 +1,159 @@ +![](../../../../manage/sql-server-extended-security-updates/media/solutions-microsoft-logo-small.png) + +# Ledger Azure SQL Database - Demos + +The demos in this folder showcase the [ledger](https://docs.microsoft.com/en-us/azure/azure-sql/database/ledger-overview) feature in Azure SQL Database. The demos use the Contoso HR web application. + +### Contents + +[About this sample](#about-this-sample)
+[Before you begin](#before-you-begin)
+[Setup](#setup)
+[Demo 1](#demo-1) - a short demo of key benefits of the ledger feature
+[Cleanup](#cleanup)
+ +## About this sample + +- **Applies to:** Azure SQL Database +- **Key features:** ledger +- **Workload:** Human resources (HR) application +- **Programming Language:** C#, Transact-SQL +- **Authors:** Jakub Szymaszek +- **Update history:** + +## Before you begin + +Before you begin, you need an Azure subscription. If you don't already have an Azure subscription, you can get one for free [here](https://azure.microsoft.com/free/). + +You also need to make sure the following software is installed on your machine: + +1. PowerShell modules: + + 1. Az version 5.6 or later. For details on how to install the Az PowerShell module, see [Install the Azure Az PowerShell module](https://docs.microsoft.com/powershell/azure/install-az-ps). To determine the version of the Az module installed on your machine, run the following command from a PowerShell session. + + ```powershell + Get-InstalledModule -Name Az + ``` + + 1. SqlServer version 21.1.18245 or later. For details on how to install the SqlServer PowerShell module, see [Installing or updating the SqlServer module](https://docs.microsoft.com/sql/powershell/download-sql-server-ps-module#installing-or-updating-the-sqlserver-module). To determine the version the SqlServer module installed on your machine, run the following command from a PowerShell session. + + ```powershell + Get-InstalledModule -Name SqlServer + ``` + +1. [SQL Server Management Studio](https://msdn.microsoft.com/en-us/library/mt238290.aspx) - version 18.9.1 or later is recommended. + +## Setup + +By following the below setup steps, you will create a new resource group and deploy the following resources to your Azure subscription: + +- A logical database server. +- The **ContosoHR** database using General Purpose compute tier, 2 v-cores, and the Gen5 hardware generaion. +- A storage account that will be used to store ledger digests. + +Setup steps: + +1. Clone/download and unpack the repository. +1. Open a PowerShell session. +1. In the PowerShell session, change the directory to the setup folder within this demo's directory. For example, if you've unpacked the downloaded repository on a Windows machine in **C:\\**, issue the following command: + + ```powershell + cd "C:\sql-server-samples\samples\features\security\ledger\azure-sql-database\setup" + ``` + +1. Run the **setup.ps1** PowerShell script. +1. When prompted, enter the following information: + 1. Your Azure subscription id. To determine your subscription id, see [Find your Azure subscription](https://docs.microsoft.com/azure/media-services/latest/setup-azure-subscription-how-to?tabs=portal). + 1. The project name. The resource group containing all your demo resources will have that name. The project name will also be used as a prefix for the names of all demo resources. Please use only lowercase letters and numbers for the project name and make sure it is unique. + 1. The location - an Azure region name of your choice. See [Find the Azure geography that meets your needs](https://azure.microsoft.com/en-us/global-infrastructure/geographies/#overview). + 1. The username and the password of the Azure SQL database server administrator. The default username is jaydba, to match a fictitious attacker's name, you will use during the demo. **Make sure you remember both the username and the password.** +1. When prompted, sign in to Azure. +1. The script will deploy the demo environment, which may take a few minutes. +1. Finally, the script outputs the important information about your demo environment. + - Database server name (`server.database.windows.net`) + - Database name (`ContosoHR`) + - Application URL (`https://app.azurewebsites.net/`) + + Please copy and save the above information. You will need it for the demo steps. + +## Demo 1 + +This short demo highlights the main benefits of the ledger feature. + +### Prepare for the demo + +Perform the below steps before you show the demo. + +1. Connect to the database + 1. Start SSMS. + 1. In the **Connect to Server** dialog: + 1. Enter your database server name. Set **Authentication** to **SQL Server Authentication**. Enter the admin username (if you haven't change it, the default name is **jaydba**) and the admin password. + 1. Click the **Options >>** button, select the **Connection Properties** tab and enter the database name (**ContosoHR**). + + ![Connection Properties](./img/ssms-connect-to-server-connection-properties-page.png) + + 1. Click **Connect**. + 1. When prompted, sign in to Azure. +1. Prepare your web browser. + 1. Open your browser. + 1. Point the browser to the demo application URL. + + ![Web app](./img/web-app.png) + +1. Prepare a browser window for the HR user. + 1. Open your browser. + 1. Point the browser to the demo application URL. + 1. Log on as rachel@contoso.com. The password is: Password!1 + 1. Leave the ContosoHR tab selected. + +1. Prepare a web browser for the Auditor user. + 1. Open a new InPrivate browser window. + 1. Point the browser to the demo application URL. + 1. Log on as alice@contoso.com. The password is: Password!1 + 1. You should now see 5 tabs. Leave the ContosoHR tab selected. + +1. Open the demo queries in SSMS. + 1. In Object Explorer, find and select the **ContosoHR** database. + + ![Selecting database](./img/ssms-explorer-select-database.png) + + 1. With the **ContosoHR** database selected, click Ctrl + O. In the **Open File** dialog, navigate to the **setup** folder and select **CreateDatabaseSchema.sql**. Do not execute the query. + 1. With the **ContosoHR** database selected, click Ctrl + O. In the **Open File** dialog, navigate to the **tsql-scripts** folder and select **UpdateSalary.sql**. Do not execute the query yet. + 1. With the **ContosoHR** database selected, click Ctrl + O. In the **Open File** dialog, navigate to the **setup** folder and select ***ListAllEmployees.sql**. Do not execute the query. + +1. If you've showed this demo before, reseed the database to ensure to ensure it contains the original employee data. + 1. In Object Explorer, find and select the **ContosoHR** database. + 1. With the **ContosoHR** database selected, click Ctrl + O. In the **Open File** dialog, navigate to the **tsql-scripts** folder and select **PopulateDatabase.sql**. + 1. Click Ctrl **F5** to execute the query. + **Note:** for best demo results, wait 10 minutes after reseeding the database. This will ensure the **Employee Ledger Entries** and **Audit Events** tabs in the app (Auditor's browser) do not show reseeding queries. + 1. You can close the **PopulateDatabase.sql** tab. + +### Demos steps + +1. Show the app and the database. + 1. Show the Contoso HR web app in the HR user's browser. Click on the **Employees tab**. This application displays employee records, and allows HR staff members to manage employee records. + 1. Switch to SSMS, select the **ListAllEmployees.sql** tab and click **F5** to execute the query, which shows the content of the **Employees** table, the web application uses as a data store. +1. Show how ledger helps investigate tampering by DBAs. + 1. Point to Jay’s record in the table (row #4). Let's assume Jay is both the DBA of the ContosoHR database as well as an employee of Contoso. Jay wants to maliciously increase his salary. + 1. Pretending you are Jay, select the **UpdateSalary.sql** and click **F5** to execute the query. + 1. In HR user’s (Rachel's) browser window, refresh the content of the **Contoso HR** tab. Point to Jay’s record to show the HR application shows Jay’s updated salary. + 1. Switch to SSMS. Select the **CreateDatabaseSchema.sql** tab and show the CREATE TABLE statement for the **Employees** table. (Once SSMS supports scripting ledger tables, generate and show the CREATE TABLE statement for the Employees table instead.) Unfortunately for Jay, the **Employees** table is an updatable ledger table, which means his change, along with his identity and the timestamp, have been persisted in a tamper-evident ledger data structres. + 1. Switch to auditor’s (Alice's) browser window and select the **Ledger Verifications** tab. Let's assume, a few weeks later, Alice, who is an auditor, performs a routine review of changes in the HR database. As her first step, Alice runs the ledger verification to make sure she can trust the data, she’s going to examine. + 1. Select the **Employee Ledger** tab. In the **Employee Ledger** tab, Alice can browse the content of the ledger view for the **Employees** table. She notices a suspicious update operation performed by Jay, who will not be able to effectively deny he has updated his salary, because the data in the ledger table has been cryptographically verified as genuine and it clearly shows Jay updated his salary. +1. Show how ledger helps investigate tampering by malicious application users. + 1. Switch to HR user’s (Rachel’s) browser to execute a different attack scenario. This time, you will perform an authorized salary change acting as a malicious HR staff member - Rachel. Click the **Employees** tab and find Frances' record in row 3 (you can pick another employee record if you want.) Click the **Edit** button for Frances' record, enter a new salary value and click **Save**. + 1. Switch to Auditor’s browser window. Select and refresh the **Employee Ledger** tab. When Alice, the auditor, performs her next review of changes in the HR database, she again notices a suspicious salary update. However, this time the **User Name** column does not tell Alice who performed the update, because the column contains the managed identity of the web application, not the identity of the application user. + 1. This time, the attacker, Rachel, is out of luck too, because the Contoso HR web application has been instrumented to write all SQL update queries, triggered by its users against the **Employees** table, to an append-only ledger table – **AuditEvents**. Switch to SSMS. Select the **CreateDatabaseSchema.sql** query tab and show the CREATE TABLE statement for the **AuditEvents** table. (Once SSMS supports scripting ledger tables, generate and show the CREATE TABLE statement for the **AuditEvents** table instead.) + 1. Go back to Auditor’s browser window. When Alice views the content of the **AuditEvents** table, she finds the corresponding Transact-SQL update statement, Rachel triggered. Since Transact-SQL statements are stored in a ledger table, and are therefore protected from tampering, Rachel will be unable to effectively deny she has made the change. + +### Key Takeaways + +Ledger makes your data tamper-evident and cryptographically verifiable, which helps ensure non-repudiation, eliminating a need to run laborous manual audits and time-consuming investigations. + +## Cleanup + +To permanently remove all demo resources: + +1. Run the **cleanup.ps1** PowerShell script in the setup folder. +1. When prompted, enter your demo resource group name and your subscripton id, and sign in to Azure. +1. Confirm you want to delete resource group. diff --git a/samples/features/security/sql-ledger/azure-sql-database/img/ssms-connect-to-server-connection-properties-page.png b/samples/features/security/sql-ledger/azure-sql-database/img/ssms-connect-to-server-connection-properties-page.png new file mode 100644 index 0000000000000000000000000000000000000000..558d07c322f9ec06bf6932b9f041ac94d5acfdf1 GIT binary patch literal 17996 zcmdVBc{tQ>`#(ITPwJym6qTJ&)*}0slx;*IvJ91wWe9^TgA$T`9kNWzNW$2c8H|$b zOvW-X#*%d`Gi4iQEYF+n`+mO1{rery_x>KgKc46L!}~JVT+4Z#bDpnryWY{ajrETI zeg1C{2z1;)|Ar|Dbbt&39XxX6Fwi3@cGVMT4)~brT?e6icqzb#L(bZ_v_YV<1h%aQ ze*vG5KGC=G0fA0@-TOPx>iO{z2y}D8;D)yOQ@f=cCLU&B_npc8KJ=ODbMD(O4&D0R zN-1TxJCdw_toLN&Gr|V-OXoYGhlb=%+gfnLuZynIsc2V9ORx;Q{;KlA(7^>!GdQUW`oYb}^> z%%$di*>@2i`8vg#cK-v=R_i861;^4y^d80Elad!?n$qT^A*Y-LA`NO@Pbj`n!zw?A zIi?34tq1^)68$255#5w__5wNewnBIw4}QaR!nx_eB|nkJvh}2Hxg}p{W3_|gdB=H1 zR_BOP0xG+Er|36T&_{}7$2Wk9Q;g8BF2?3&Ww~YfLD7>+64pO+X2)tz18jSE@6Zrc z!Z!K~VE{>VeQsOj?i(m~<7BZs&d|8(e)jFAE&^DV7lur7ZLj1rt1t^HO12jrfu7Rc z0ozNu|$nWmMwnfLLE=XT!1FP<15O#vgB)pFt>AJ!d~i<87(25 zS1g?}js~JWyW9LMhuvtkCS@HR<41@StBV!eaDkjj+0)fICMOSRABz^W-7Fd9KhKKr z7zZ~p{T0^xdVgnn6gHa*|IL(c<#5Ed<$0#%iKq?^j|Pv7*|BpqW{b!Zf7v5zzbXI= zoP;JNyGsM^wi+2)kLX^0VmuocfQVQOTCI*T}*rRH=@Xd7H2%E zpBW4={+;9_UTDfE-V}AXLn2H;yV5K0+6yMNj>f3i7i&NqjwTi44!KU91$e1_a`P;( zIUr<5p0~9M?n~#PvY>y8_J1S!|MvAAFnx_^&k6#Ci9ClL0D=B~_WyzB1d544(!aHb z@9DO3HVpanXY`bI*p)In>F$S`N-INMU8jArs_zwdt9lu~S_^bcXS3<4x9TzKu#@U` zZ7|NQ`Q|!-&&irr_1XgQ&c8lzpI4a@GM*4@wJiAg;=P!suL%a__ww-UtI~QIvPHq1 zj*sInk#!*QpxD26GpVTM&?dW{S+mN7L9H@6+;eM%ffTR(&oLZK6NGy z(Ol2P7(1mAB7)slhXuU`M|Mrdd`lbc?(BPK4SccomzE6#SVI_I}0QnmLM zHWVe(Ha-9>NO^atAKOK0a-H~w(K#1rpc+6;%Bx#YVEO#ii?ID#mRSriP5dTa(Vwws z+U=d-wUd+=^b+s(wFX(}XVFET9on>lZR>s`HdYg@YTA1kh&7%}bQ(*Qc`hd1p)$b} z_BF$cFpWI+s%W>I(=N587hQ|V!x^MdFw>t%~Xne5|nc#w>0-yD@u}_?eIE6o@U!1IuO7nOaCM!sOwL`3T zF{3LGw>i7H7FGxGdL%@~!jOA#(LI2=ql5@~QN|)Z*}i22@~YVJbc)CQHU)M;@v0X_ zJdgf*jqK)v3Vc2SEIiugj9dfpwU?w{Cz?9t28Nk*cfA4=`@Fjy^U{;tI^DS_O?lz4 ziLE={(4MW-Y`^nw)OxhiU=dvkL{pLj#rI{uX@HKkIvclP4f}m}K}ZION2P@Yu5pbf zsH-6f?nyPdL>^J7>5^m0>ATvjMff=~P%tJ)_b?%1MGv0h=jNBU+tio%%npgjO3N|D zV%$6yVsekA4D0St;|%6fY>{U?1wPka!(O(VGC8!q@s$-)G1M~qQe)@)jg_n>>35ou zF!m?iknKAun`!UfnievNGwid~@JKr>9OQ72()6?-&&m0wMfx(cX1P^pek?66bhp~^ zq+P@qGOmNo@orx*gO zLWLu?+PCOps)xYmmwN=IhG7#Mjrv8arvzRO_?d)-K2Hf>`snl)a)=5vT8ym zTDxrMyTkQs_Pcoj3yoVZ0~TgAT>~DCGVr_2^=tBYU<^ZLWj!=_uzp)0>jqzk9vRR&6x&g-1iJ;+~*A1wscD{ewJqip^0D4irtK9>|I`n+oa;Fg5$4*P7v>I zZHlWm4rWZ3{N9>B@WMyk)HwV$PPG4AqMtJA7MBZhQfXt|8ntu+b0WqzWm3s9xa5Ax zz(gOfroFOkDrbkU?*`-g_FD}vwKauiBDZ~Ld4l(b4@@gURj095F*4*AQI_ax?+{Q- zc9SV-7-8|2ZPO53q|Te26l6tp@%QZ1kfCEoR=jDQ@`Cv1>YU5&ZSoJ1X9Ao?Dn#&!>fmLg_6kva zhPvBwS9^sx{tcXKIunNfp#FZjs6$>7k5>P>EY&G5jjvXpT(?3vk7_XG4!7MCba)wlhG zy`DRQ1Rwyq_=OW0zULUd`n73dbQ`O+yQ0O;DYo{S1(eMax=1%R$2MPOp&b0Ivcfl3 z84g=3awt047u)Z493+SeR#41kaH<(9rD<}Z;LTSjZTX7|v>U(v(8h`%q8KZk-7;a> zKHnW^JjxCEElY zL;vl{faUi5ZdKnRK?nif(&KI-_QRZ4=cSEf2Tu$Svr#Wzq_bh|i?#G(?2f_8>M#vC zACel#Q+Vu5%w1vHy}7wUI~MDa-76SXL!7a+Z!yx&-L6I)Sy@61l*C(A_}X_Uh%M(_ zniVGFho;9U{CBae7vF=i#ipf%+5lwZrLkGj=^Ne-xtKEfNB$LzykT4H4Rd4ZfXus5 zFvM;Wob%-Jke`doaThQzmUjpaGh1S=c#dpVccrUV6GY!_QL*!KaID&3i1b^nkx$`j zt#*0|{@0=GgRT!)lOp((k?Y}(?O$wtJ_WMW^^bWOBM(3ecOATaU#xC4LT48ZKh&@F znOOH~LM_&Ks?)408=fgEw$6puX6w+GPR8G+59!laWS@Mo;IHvZq)|cd0WGFwwy;cp}sdB!kqB72pM@4 zWfHSe)UhyBBdOD_!MVxm2F(reeqd2T`XVG|8gTPj3}0_$)dcNNtHyAXDYN#raZA<(Dt#=vHBhfZl%HKmy9 zP6l4LW~h!V%-{{yU4AMQFY6IA4f~E2)D&ynQOVMLWzW33qR_v@L*P>R&^vu^kf8NI zi)1;mQ{n47Q&uwFSH0w66Ypt}{hCN#;g6dS#ZF?>xGAqZ6QszW!oRYWo@;weS;H_I z84-O-`m7K_cgTmr2%)!mSFUO(xW%kQeWze!ZHEeAjW&A7Ra+}41wu?4?#bb9>e(oq zUM4$Zz3n5O=~k0DoZ(s$r+zT?`A53Ll4|qM)87dEaMhN)qZBV`ixs%$>aK~%#pZ8U z+?I_2^Hnz#O6>L}YYlKAxen79L&>WQY=2c<`PZ^JOlpY1T139vHSl_9b-YpF<1CL* zbOXbh8OvEvKIx!Z>~z0jXkA}Lx7J5w5FK$J#UpL=m;xVr{nlWr5Pf1%RIl(N42y0Z?_M?^F(O4g=OFmT4rdWG`u4PN|rrwu1#(> za{J}_f#SMd2+o{oN?|-5^Z5yDY*>5UvN`GV(0iJejAphbJ>~nk@>9;+F`w`?#1gAD zIAjS4FeNRIB{qs-shRi+slh!6I$)vF`FOUJGwV4~-Djfp3=)|^omN3vwMF5D14 zweCalApM;u<1A9D8wl~-kW0&O#~HLJS%BgD)E?ml zy+G5zC}p42c^x`iBw#Im@7&c#V>q|!-L&aXu6|rj+&l*sR&G2o9%N|O$S1p=gEIO2 z*X_E=eeji5D8($-o$lgLFVL&{rX2&>7Fhna1kPKSgyW<8d`euh$0kUm+2iKuY)wkt zsN}wMt(K0ZjTV*!P8mQuL+j9WCb_E8yCXv6*YkWGgUR}-)WhF?2~&0>y^|gDDI$<} zq7SbmTr{PRI;qGTrg#zt>9NPoFK3#inKa)G6`P5tI9fN3oQuc!|G;KnzUF**VWi=8 z10Z_etDEOu4hzpJ4KE>!bv3+(?&L5q?)?KO=(W!E#$X(xNW{#4Pu^^TYS4FQ@%10P zLQEciU9Ul~4rW13S{J^r54Q#c(Vvac3~2+F8p{`IvVV?crPc@EcVJkDGf-ZjGHE2!vcQ% zU;ox9V_?%J0|TL}*L~hJD&KvvM(CRDoZOmt=8z7_7~}1_;Ao3k znnrVW2Qq{?L|#+SBLeOGt;p{@ZRl_aRXs;D^V!uE2LFO}UB|qcWf^X4a#YJ=H|KSM z9k=aO4t@H`Mb(Q_Jy}1)%ozJah(e^k7R|LeA8=L8Au}u&D53drUY%VJ54ek}he0e0 z%5*)XBHk?dNxLu;=T{x)J>~TRMljTgYDesJ!-rJ}&jp&h$HIw5;pC5c>?bjPZL$t8 zV3$0rzJ}FHsSumQi z!Vm{(N{o##;`!-JJoMaK`x>;uC#B4M2@|@WuQU#A9+EZ6%so1dVu*DJ5EP+Dmy}_< z-{_CA+gJ@7-z7pM+WBi5#XesMn&bcyx&E+T9ukl^4-f6ikBIUWaXJ?~GcRPp?s7}v zTEsJyCNa$gf1JfA&eepRZlvK0$M|hv7qstnq^o}QLTcSc&eo6xf8x`=;HqRA#{$tE zoXZASJgpYAP5(xP z`2)lNvsp2L@AC(cL(d*Qa1M66Bxz}KRuCKC>N_<*Nb$-oMHUv~6_`sA4b_a1+aFYM zRnoiAe(}X2ylTVJ2xMW6R7_MAG;zz+p=R2We0*Cdzkffqp>>8vRciNH%zR%p=V9P} zFG{GT@vk4yect>rkLQu(*dmPO21$n-$csZ-{tx3xlXf;MVLiE@|VxPX6*X}?-Q`M@w$q#{%NTUXwJ?qDShb0MK@upaSyH;Al zRZDJ2b(+PocIVpXdme5+yuMZJW5a*@oYB|hA0LiK2g1%_{N`Y4AI(|xHk#Vjv*J`W zJnWHJ(}4HeEmiGu1t_JC9;g5o$qp+P3au4W>pM0pR-!P^bPxSObmg}PS9cwt$I9k= z)JQO4+xg4=^p7a|W0N0adB@uW<%y0pK{el&NafpZi}44tPez|IP>N8GoqrZBAOnOP z^4bsU32AtrrMjWOYQequL)q+tu4W$)ePkTw*h?(D0sW5}u`m8`qW=L<>^;!>OP8CHoh+9w@i?iea<9U>X-{(QMrX*q9s z+c1%nglk$*Z8X``S7HO|ArIZJT&Hx<9CB}$UP`1|JqOAvXKi9luo^c|p`m@-%}6!p z2kC5TI(}e6IWIXm_oDc&TJD6Bx+v1aa&2-bZq=Oh(42oet8kgkaLpULyZya*xn|jX zx?Mr0Nnt+FY!iyLF*xEf?;oAA?bXt#aUM+HS#Pn8+Ns4U?ngtMtw0?Ghf|0foVz-7 zVhNqJUYC7HJNr&{CQR~F1l~VKovU!3S5^XH@<_ySiZD3@gXGKF?|!e<2*q?%7W57p zkzhN@2~ZQWsodKh@3+#`=g;@8ecG~qN3|X5S&JIeGOL8qJWGlnd)`_aV(QJbyjt-4 z=x_FXM2VrVq#Cl@hI^(AQv*s(f!PSyq{D+y#A2%F2xj09UOPg7{`ad4sXx%=bNZp#kkn|B%kMb2X%R9+UJvJ0>l2+)tc2OzbjkDc zSsHV<4N6k!C1;R$0M>h6|1>>EQXSKMX)}v`M0jgRG|E3cq{~4skgRZ5o$i0E4hubiM|?)TX=LyApO-`{bR_Xc7;P3Dwg=`5S8+r z&ILaXk+?YZmL<{LSUbxE`@Pi7ZN$oF6&v)h>Mhei-7TPRGnI9qGp$W?E1(*+$g) zHWOE^Q_0sD`lxd@#{AHgNd0Ifaogx#L+<RJr$Q= z0OPBXrv-j6I@xTX6H{}mmP5bhvWHlvU>f(j4p?b-X*zw{Q5su1rtfKEcOn^~F1=>1 zMlv06DVPjAnkD!$Men3%))Uc086z%fNOVhMA5d+xE`Z|3Q%^w}WWjaG{wtYFgBY0r zGotTujCn!%-MPwsuR8xy&qthxyb@0iRUfqk@~@Ag_Z$zec_3l>M|;^&Y$<;M)u1cY z|6SKj4-ZgS+1u7jM^S7b&~4EFxQP}bz<)-I#|x4HFUHxY!dA~^CC_RhxD^G11DQ@Q z{n#5=dHFuVLh|@q(P$uXGTx?tEQ#usj%fIm9)qzedhN1@Xdj+8KStFJ{*0;S_EF>X ztC)zeLKB^=Xv`HSwhHg*;x6GTzO++>8NZ+hj`oN%Jz1SRVQU}a0Ou-5_zFK|c{EQFb9=HK!sckr?@jN>x;ixgXe}z0 zE=20nqs4J^wS;1)Ov6vcu_2MxBJcWVUlvLBzN$okgN#tFf2rF`ylq*dz%212RMPVF zNMg-jdlk32S3h_}Qaltmb7YGyho4=T{<)=+cHi-+6+yyF7OK*H&J%_aC&HE<_2#yr`1`i5%Z^x5v)(-n{gBlm?LsY$1bU3K1v>@6()CAWX68f@=~k=q_|hQX$yWwr@uF;RDX`Yvr|S2ev~K!ij9j&rdoq9414Tc3|V8@ zSYsank1|?+TRJ5T$9EiY@u_PlE%)5Ihs#z%D1jDk@%ZixdbK<)%>tJqA}!U{l_Jjv1%W4~v6jFth$}dLi25|;lXOtWIAM``|(l4!S{V>2L2)r&VjGFP9 z&zPltNvmV!AIVE_rrc2k8D+%)647~jbMvZr<>eK&m*cOStfX%kru~tnM}MhvKl|oQ zaE$tgFy(;YcDKg7PbBHdU){}o!b=&=WUXMGkqIaYzpc3ZSM5ES+t>jk4_s-}v4;lI zSuIUo&(lQj85A}*R8C)YuJ6UDYV@1oCI0Io-$lu->;f54zul|AFPTT=#mRM1Ghe={ zT{!k6GI-;wfbj>m0tfC(}ISypyJ`=Mt5wf+bpVVU3Ra};e>kxU_8Lc zym2G`bc7^7X=r|6Ko@55oE`n?ZoFicCfjv$N`<84V-xjIy0wVkDcZ!AFjZGrw0^PJv|hLsZ@`}u@|Ljnut4;p zyrtGj>m&<;jmjyEtPIBIc}DQLqvfK^-m!0I7s#yMka?; zCEeG_HvIV7Hdk50GBS;!L)3I?0L@-EtXG-%8zDsY5lWX_{FV-Lv~Z0W)OX`V1v$Jc zY-Qh$Rq;9o6nVJ-^p1#0^za!U5%cXaxQ1oTBO2A*N-U5y zQdsWvu6SAdTGX>$K~vnnzNgiQd))TuPbeq)vk|vgXEjVC4i9@j?Woo{A|*>&je=e; z#_2KE3`zs3U%!W&j~%#n?gC)W4xZ}h7x5+Q07#I3 z^I;$%O&|){-R;enm$vm~BYEw&!$v$fi5jK3`nK4OCY;>|#*UbP^mHD+BjjXe@+)Hx zC+o0Z6=g-g^*!EhzpT2Bs)5mH)4O=NDb<^AN*dOO1>?oY@>nfUOIY*OJU754`Tm;`=N&`7B758}q{=1GtxSoU*L5Lev%Q zJbE`EsOE|b+m2%k<}FB)}!$51v!$c*f9hemrzLTCG*7G%_;HHdJ%NV zN6VdTi8~es)_I5}RFMiVlZyLpsLrp9CZc-+AhTu5DPJDe9Wy9AoDg_9d2-pRoa=4M zqt#9C&(jHq#S}g&EK>r%z7ch-V|e?nVJzY}@;pfrN&bC3Mw=3z2CoUls6Yqj(kj?Z zblebBw3lg<)*883=Wg91a&(V{;+nssUt0(N4YvjErTmKQp(@d6zjQmsB;$zc{#qBP zk_dtE<;09iSYalTe8PqLHi7k$sEmDNeGKb9A; zFY`FYLf+Z{F=5bWJ$f;%L#e%oC2LWfqCMo8~##fba6Yew&eN{h&!^mInSoS z3<(%>(eC5NqWy<^0dsycIN2gP$feVz=jnSN-@uQp?8?;oL@iBEH+!eU!mXFz-%2fM zA2>rW+ccX#v>0op$?gwsi>ue@)H=mO(Uemn4sdwMQieZj^;OMA43(*cIM7QZpT$z- z$q4(9fRja4_&AO9Wvp^ois0t_kIK8h&!q@7~EUcf(5DhZ&5=#N<9+yUYF zc@VY08Xx%P7fTeU*IC=ex+e&(m;uD8^uFK#)7B5M&7jj&Z|{VDo-V7Ht>s08uH2Mp zPjRo~YpZV5uj;Jwc-$`;?hNr85V+g$TtGQxnoaJz*yv;4Btb~h*dJa(N4cfQl}p&=Q29eBX|jNEZIX+c%a<#1L(txLj;X87T5=3 zTq#}b#V|u+i}_9twXg(d{hpQ;rYXaF16w}q(CPHy?^3lr-$vUI+n({+9`$N>BZA8# z*hqQAh#R!74LI2s=A_B;Cjc>eJkNgr<{O0L*5cIh+5y&zUJ27XL2t|XM&<44fp%JOC zAufYp`I;rGR??p5Ea>%+g6<~lm;6q@!(pPV&R82Wr@DU(8X@BZ+l=b5-F}y55nevPWuP$z(pjTRjrEg*aRCCwhh{u?^ht9+>lHq~;j1Gmq|F z*X)dbx}{YNBWd>WNnop2Gwn|dHgB5!sot!XvI9BRB;_&~3D+=Ej#ASP`z_}!18<$4 zev}g;09>08@$#np9T%Eks3lUxK?)AI#PwE7Yq93&?a&9G)?&;}_v;3HNH)6x#s9`W{x^m(nE>5#?X}%@J!O>sU+tlfB4L_{z5h<%$QZjhHVd7R z)LmT(3t|_GlJT_ERlK~OPTg+U+O>+@vjGpZ=kZbJi3 zvBp_(GHv1XvykN!r2DuXt4XlYSqVsu^;Aa%9bZ1VGlZS(+f<`@riFTpDMv9ShPcAy zZ~lCavN~HD=yP{7%tM|+Pi;Ok$qqfS|4XZBokZPpM`95~uChe#bKRm5N%MLg- z(jL2{^zf{wIA)*F=p(;KE^NEk?IA$!I$tsFvu_{vt(T$xtyQlF8L)vY@qjq;`sbh! zjn$p_Wzwo4wxD`L5tJ>&fe;~Y+yknraJM%VEOF_Dx`@8~y&PvkpXuy$eEzUIYwti4 zjigYuIryE#?^0vkOU(b0L5re{4y!)LYls{EM#b?&OVeKj`Y}dVbdXj34YLF@=|Y4Knod0z1t{OuHP*{FYX9Le0=biv@njUw z?(Z0xeU$=yAkWQoPcVP1HuiQhIN4)<>}NF)a<@EdJ_!`7lVoCn&i}|V?5*^4S4oV$ zWj~TX&Y^>n#NFJhEvfxCG5iA#)K0)L_mp`x&_&?%d*&uH5QPppqR%~Esc&S0UC7HU zM5?k$Swz=gJ_i`42@};56N@{?Q0iZSL{2`CpT5Eoo~OoW)c1YGYC#Nm$zX?!qO;4X z&)f~@v7t&z+}=6D--&iX(3ASy_j&h{I{{ng+RW5TqtHH5;XRp#dmxnAjqYA^cS3ve zZ}zXS?_1HRc}E5DG?{&#dZ`c~(p^$0a4z6pZ><9rsJF9h6}HT+g#j_RqEgI2V4ZtS zyVxLP4DT>Ur=zrrG1PT=|lX2cdI*a(TC?; z6_CO0URx_J5X0=d)+5G`S|o{=4#tI|MjLceDzFX6JYSbvM=_d7LWdt6XkGi^hWCBCg?#wKs-5q)8W!*N5q z?Kpo-nkVvn_F~pE-OM<-{%S3JmBJ``0St*5^RKKlm_5#HmuoSQ2BH$D4^A}+9!^dY zDG-1eA9tQHX5e;j6WG3@3P=*^l$u(R^;a{Ju><_?97PytM6#Cp@1?Z6t6mScFlTx9emP6K0LPPG0ZhG3O^bksW6@(%5kV5AvpxiI4FE4# z$B!kQ6^8s?3IJQit88vedT9Nos#xk~^RN2`0$1t(iF*FshyFm(OUwldZfm&{fHp`% zPL)OH=k?rV=J3y=V!tu(ZFkwx7f{4m4{4EMO3!;>H7SmBD1 zl&WZ#`!V?D6r$JvlG0+U%LBEv!5=-47&5xOvR!tv%8u9uY(l-h=P>8{7P- zqp$kDVltUhIOI=nSO_B5HAagYAU@**tR}rl{ehL0R+rrEAFQK%wBLW7QWAVod2_?a zP*Xhps+QytmKgGAYJ&loT|Hzh>7uNJQbP`gE3Uh7Kny(ViwP!pPG&<7QS6$Wv2`aI z`gE)KH3DvjYL`g6cJb{8YH^oOay@>v;XJL=@1xo1Y3Ax98&J>bXo>;1OtLkW``6O+ z#&8{A+Ca)DIJia0^W>)~=9nMq?j*ZNSpalwPU%M;E>T>49hI=$NCsH$QD8 z*gu|VX+88WPg0s?e`)08jVI9=ME&AKwEP0IM{TYR^(awk8FX?APwvJ8Cj|6a2vbxT_2O zWgOYq9o(E>E;#D|$oOURO?{;!mcu)l_~647{)0EzK$njI@1ktac<#(heaR@(SK>l9 z8xwpf07i6eC$9uoOx4?Eep8pa31(n>8joyp7h;PB9y)P>L)EjLYb;Ajy30pRs)X(& zfbDgs&0X5ptL^kEvZqy1t!wDlOE5>q`iXr%w)P~D5Vj0f3z{#;PiA#61Y4%Z-9!ry zoxC(*2m}w&+78nbgtR#eHrdyPsWFZx-<(P9uCcwliO~LR8d<0lAGNIb5XdGb-sm#E zeRN`G-iiquL+h#(0Q*Iy&Mp*^dcEOqbG$}z&?G1*j7|IDOW3!X_i1STyHn?zvpCVs zRCx$cp$(exudvA^TTNV;RxPb}58S&|V&kbOjB$mjz&nidqTs;fYY*iJY2SZ#AGQ2> znsB@vBE9AAJ+|yk!FV%J#0syQ*;;An&bG8YR~iK34r@lCBv0+{p`Ax^-W+()2gNZe ztW|b@baoc3&k$-l@OiY_`s|`U8p~c5IVHsdIhRTulw0WP;_jVIwB{8Smdq->uz*TA z86$NC&tqB<@HN19^p|K}e~~=ES)#q&-_Td{?0a>Z;ttPk;k5q3;h~ET*KC?JL7)Eu z>{N`Hswn&5uxOspcwrI+}Rjie@n&9X0NqnDJuI`)>I^^}d@gpt2b92@q5V zu$nR#M@kZPKeW1i{wRt^NUIUS@H$AZD~;YN)ed=M&u}d>6kr9_KDv@dcFiwl8ID16n0eP8LUE(ELGs9+UzR~0cBj~&{qOqfQY|{u-Xvq&rA{d6&%{Ep!Blm6vfocXq!L}tUq=)Zx0t8l9g^UE-8xv^xN~r# z^8~7+4U(YA4jPXIxM9UXASW9J7bSOfbzFDCxSi6q;L5CDTa*=i=T?Z1DWG9&94`>+ zI(la#m(Z1GgWMmG?1)Jc?|Tnx8=M7=ckM0Vm*nxoKGX4DPh7&c<^bOu-`v_*L7TKu z<_JFpGL5RPBb?tj=a~VY?a;4c0gW30fM8{fT1benB3f%AVXgH>wpeZlj}Mt03+aAq z-tO0R`K>Jcka>~yAu}VhBe0$Cx%|K~DXl)fH@0hR-SIFV;$-{*P`1Dx^F<>oVee(N zrJutjpS^JGHGDbIX-=xBUaB`uC?-zVT*Wn?KB`A>b&0CXo&B)f>Dw=lM|<}xM8M$n zWjW~gUQ6X&i_3cOG}ov?0nqr?KZEa#SXflDME=!*#S#MvAcoA=;z$9i5>&dAA&Q_;wVLSRnJ5FecMmTlQn~b%juMuR6aG5zXT&=Qc42yC zcYSF@Dt%$T_6*@6HI&mIce%4llUPyh_(I*A+L6l>W3;5SV3p|z!Qll4D8maq_8H&a zsrt*zVxac+AH@@0Q)I;w*{S>JD#ll3vb?DSG+ zr_2E`U*^(l+bnDc^$z{$HGtx)loM$}gotQB$y4r?{Wv!>($Q1)qwP^c<-^s^HXmsz z$#=iLy=#$Dd9!j4qkuX?;L^qx1U4ZGwu*)gJBI`ZX1Ev-VHF4BVOK ziF%qO(+pG!GY;(^8xoT?rI#C8o&HGFB+09CQL3pZFH6M^y!8$1UK6~1P#$ttX%AX& zn@%4YD3Udq=T+9&nrM|opIB7Q9OFmYp5#q{VL}(n2;{uEc^wW+RP9; zz+ITDB&%E?hP!=cYRI=9h+(hobMyfRAk!-8F#D~xiW%x=+_8mBzzCHkLrFl*cw!Gk zE+0*#?(lkkV7?1@3xxN}MP1(8SGFTQPH`7-v`)e#M`rC$9*B}P1JbR?J2f5x?E50c zEp~uFMot>g<+T6HJ`u2mAus zY(PCGOlp7s|Hlr!B*u%T**QNwGB~NYT{`%(;1%e;SEIXn5t7Jjv z;JIZXfFxxF@l49_Bs+Smydurv-ocQqU#=CWi=94p*9-TTB9rp_cgK4?z;=zzyu+!F zNkZBHcqUFiCipI!w{`Wk-;KUJ<;!6%|G*#T?!4^x(rk)PQ!5=>(>$^=0^c8-*Jecj zos*K!`Ia{(ViEUi%DFU|Hj$I&03NMV^!k+f#JRr*OM9~|`4 z(Fwj4w*L!xpQhMd-n+?A&Z~o6;d*vnM_y zt$-u`Kfc=a|BngZQ2Q5S5&Zvn<@np3Jm9to=$2`Z(G~qYt6HkIe|8{)037K5#pmI@ zYe?Fx1tDyxWt|lB#=lHA-x_=xJ6J*6Qc)Hz&?E{%&c>?u?_Ga*G}-wT&GHA2^#-Wj=E|*h|u@X0;izQP~F$Bk%QJ5byN+qo(QEx z=NUlOqSBm(BKwlNyE*M8`_?Z+O3P8^@=F#c%#NFoFC0Qt=ZJ=_jXgkRVdyuS*{QEx zUURM`6&=>7UqIr32sOUNF5E8R*}|6rC(L|LKBS#6z@k>@1GXxEF$~-b%;)EQBz6|4 zDX6JEeGwdW?$|4X_l2@+1p5-r7-oyCSw5q@kg9QUFcgYHo8(umMKfvPEnfZt-0y&M z3PUiunbR|b6u98K6U?_r!uAkjgyi56A&$~;-&Foa?n|DP36z$n1nu#6QDKh43XPe6 zdn~*msB{Wak^Np&Q0^!@R6-+!+m1--WM_A|_o~6ot?vmyM3t<__0d61@M`y@k^PB+ zAi-~plH)`ZyMwQ>CDx4QoVtMbmSe5hEfK;%C~Jzx@*0BK0#+JeWz+|f#)9BT=54); zBJN60-Kj-ICHx-~?5z6$52va3huil)b_lVov=Pi03>y+A)@Ey55{pCoktUZta6+*g z*`-KHFo9?LBJWPzs}J{ftCHr~$(B$!2Qo`y;U&Q8FQ}|!h(3PpnXyUUngQVV+n-O( zbT!Nsp6lnyv1J_C6R&li)pu6Uo#wt0({p)F!gkQBe3!)I(s8hg1E;hzFrRSkYgTB_ z$kpis7m1PkBG6;AO;bI~Q)51_t4pr$O%wrPCYv@x2+w%uy^ca%U4~mpe}Sgc7w=yr{;0#h zBVM3()@HMqmhYCM(6S`UJIJK zW3`x?^oiqnk~TfZNk^wNPssn&{PR=tKK$;sMKWcA29Ts5tZpk2uQn!DXQQ?kbuN*X zZ%245vWJQ^pp}9%CD!5tl=JeE7Qi_nj;tAeln%d7p6^z_BfL~tQLtT61Bg9w`%HY@ z?(j}wfi$WTk|yw$#p?%%r3GbukDS0OYHUY&Rs)v zd#RWvV1`g$)^s!c$=`o8O@r>Cs3Wn9@meP+UvVA_TerVHu- literal 0 HcmV?d00001 diff --git a/samples/features/security/sql-ledger/azure-sql-database/img/ssms-explorer-select-database.png b/samples/features/security/sql-ledger/azure-sql-database/img/ssms-explorer-select-database.png new file mode 100644 index 0000000000000000000000000000000000000000..004852ce2a680b28c01e1561f116eb6602faeedd GIT binary patch literal 64781 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 literal 0 HcmV?d00001 diff --git a/samples/features/security/sql-ledger/azure-sql-database/img/web-app.png b/samples/features/security/sql-ledger/azure-sql-database/img/web-app.png new file mode 100644 index 0000000000000000000000000000000000000000..896d838b5c390a0d054486fac51bceca28fbc5d2 GIT binary patch literal 107343 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 I@geB{0zd-vmH+?% literal 0 HcmV?d00001 diff --git a/samples/features/security/sql-ledger/azure-sql-database/setup/CreateDatabaseSchema.sql b/samples/features/security/sql-ledger/azure-sql-database/setup/CreateDatabaseSchema.sql new file mode 100644 index 00000000..ba9f4595 --- /dev/null +++ b/samples/features/security/sql-ledger/azure-sql-database/setup/CreateDatabaseSchema.sql @@ -0,0 +1,194 @@ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[Employees]( + [EmployeeID] [int] IDENTITY(1,1) NOT NULL, + [SSN] [char](11) NOT NULL, + [FirstName] [nvarchar](50) NOT NULL, + [LastName] [nvarchar](50) NOT NULL, + [Salary] [money] NOT NULL + ) +WITH +( + SYSTEM_VERSIONING = ON, + LEDGER = ON +); +GO + + +CREATE TABLE [dbo].[AuditEvents]( + [Timestamp] [Datetime2] NOT NULL DEFAULT (GETDATE()), + [UserName] [nvarchar](255) NOT NULL, + [Query] [nvarchar](4000) NOT NULL + ) +WITH (LEDGER = ON (APPEND_ONLY = ON)); +GO + +CREATE TABLE [dbo].[LedgerVerifications]( + [Timestamp] [Datetime2] NOT NULL DEFAULT (GETDATE()), + [DigestLocations] [nvarchar](max) NOT NULL, + [Result] [nvarchar](255) NOT NULL, +) +WITH (LEDGER = ON (APPEND_ONLY = ON)); +GO + +CREATE PROCEDURE [dbo].[GetEmployeeLedgerEntries] +AS +SET NOCOUNT ON +BEGIN + SELECT + t.[commit_time] AS [CommitTime] + , t.[principal_name] AS [UserName] + , l.EmployeeId + , l.[SSN] + , l.[FirstName] + , l.[LastName] + , l.[Salary] + , l.[ledger_operation_type_desc] AS Operation + FROM [dbo].[Employees_Ledger] l + JOIN sys.database_ledger_transactions t + ON t.transaction_id = l.ledger_transaction_id + WHERE t.[commit_time] > DATEADD(MINUTE, -10, GETDATE()) + ORDER BY t.commit_time DESC +END; +GO + +CREATE PROCEDURE [dbo].[VerifyLedger] +AS +BEGIN + SET NOCOUNT ON + DECLARE @digest_locations NVARCHAR(MAX) = (SELECT * FROM sys.database_ledger_digest_locations FOR JSON AUTO, INCLUDE_NULL_VALUES); + BEGIN TRY + EXEC sys.sp_verify_database_ledger_from_digest_storage @digest_locations; + INSERT INTO [dbo].[LedgerVerifications] ([DigestLocations], [Result]) VALUES (@digest_locations, N'Success') + END TRY + BEGIN CATCH + INSERT INTO [dbo].[LedgerVerifications] ([DigestLocations], [Result]) VALUES (@digest_locations, N'Failure') + END CATCH +END; +GO + +CREATE PROCEDURE [dbo].[GetLedgerVerifications] +AS +SET NOCOUNT ON +BEGIN + SELECT * + FROM [dbo].[LedgerVerifications] + WHERE [Timestamp] > DATEADD(MINUTE, -60, GETDATE()) + ORDER BY [Timestamp] DESC +END; +GO + +CREATE PROCEDURE [dbo].[GetAuditEvents] +AS +SET NOCOUNT ON +BEGIN + SELECT * + FROM [dbo].[AuditEvents] + WHERE [Timestamp] > DATEADD(MINUTE, -10, GETDATE()) + ORDER BY [Timestamp] DESC +END; +GO + +CREATE TABLE [AspNetRoles] ( + [Id] nvarchar(450) NOT NULL, + [Name] nvarchar(256) NULL, + [NormalizedName] nvarchar(256) NULL, + [ConcurrencyStamp] nvarchar(max) NULL, + CONSTRAINT [PK_AspNetRoles] PRIMARY KEY ([Id]) +); +GO + +CREATE TABLE [AspNetUsers] ( + [Id] nvarchar(450) NOT NULL, + [UserName] nvarchar(256) NULL, + [NormalizedUserName] nvarchar(256) NULL, + [Email] nvarchar(256) NULL, + [NormalizedEmail] nvarchar(256) NULL, + [EmailConfirmed] bit NOT NULL, + [PasswordHash] nvarchar(max) NULL, + [SecurityStamp] nvarchar(max) NULL, + [ConcurrencyStamp] nvarchar(max) NULL, + [PhoneNumber] nvarchar(max) NULL, + [PhoneNumberConfirmed] bit NOT NULL, + [TwoFactorEnabled] bit NOT NULL, + [LockoutEnd] datetimeoffset NULL, + [LockoutEnabled] bit NOT NULL, + [AccessFailedCount] int NOT NULL, + CONSTRAINT [PK_AspNetUsers] PRIMARY KEY ([Id]) +); +GO + +CREATE TABLE [AspNetRoleClaims] ( + [Id] int NOT NULL IDENTITY, + [RoleId] nvarchar(450) NOT NULL, + [ClaimType] nvarchar(max) NULL, + [ClaimValue] nvarchar(max) NULL, + CONSTRAINT [PK_AspNetRoleClaims] PRIMARY KEY ([Id]), + CONSTRAINT [FK_AspNetRoleClaims_AspNetRoles_RoleId] FOREIGN KEY ([RoleId]) REFERENCES [AspNetRoles] ([Id]) ON DELETE CASCADE +); +GO + +CREATE TABLE [AspNetUserClaims] ( + [Id] int NOT NULL IDENTITY, + [UserId] nvarchar(450) NOT NULL, + [ClaimType] nvarchar(max) NULL, + [ClaimValue] nvarchar(max) NULL, + CONSTRAINT [PK_AspNetUserClaims] PRIMARY KEY ([Id]), + CONSTRAINT [FK_AspNetUserClaims_AspNetUsers_UserId] FOREIGN KEY ([UserId]) REFERENCES [AspNetUsers] ([Id]) ON DELETE CASCADE +); +GO + +CREATE TABLE [AspNetUserLogins] ( + [LoginProvider] nvarchar(128) NOT NULL, + [ProviderKey] nvarchar(128) NOT NULL, + [ProviderDisplayName] nvarchar(max) NULL, + [UserId] nvarchar(450) NOT NULL, + CONSTRAINT [PK_AspNetUserLogins] PRIMARY KEY ([LoginProvider], [ProviderKey]), + CONSTRAINT [FK_AspNetUserLogins_AspNetUsers_UserId] FOREIGN KEY ([UserId]) REFERENCES [AspNetUsers] ([Id]) ON DELETE CASCADE +); +GO + +CREATE TABLE [AspNetUserRoles] ( + [UserId] nvarchar(450) NOT NULL, + [RoleId] nvarchar(450) NOT NULL, + CONSTRAINT [PK_AspNetUserRoles] PRIMARY KEY ([UserId], [RoleId]), + CONSTRAINT [FK_AspNetUserRoles_AspNetRoles_RoleId] FOREIGN KEY ([RoleId]) REFERENCES [AspNetRoles] ([Id]) ON DELETE CASCADE, + CONSTRAINT [FK_AspNetUserRoles_AspNetUsers_UserId] FOREIGN KEY ([UserId]) REFERENCES [AspNetUsers] ([Id]) ON DELETE CASCADE +); +GO + +CREATE TABLE [AspNetUserTokens] ( + [UserId] nvarchar(450) NOT NULL, + [LoginProvider] nvarchar(128) NOT NULL, + [Name] nvarchar(128) NOT NULL, + [Value] nvarchar(max) NULL, + CONSTRAINT [PK_AspNetUserTokens] PRIMARY KEY ([UserId], [LoginProvider], [Name]), + CONSTRAINT [FK_AspNetUserTokens_AspNetUsers_UserId] FOREIGN KEY ([UserId]) REFERENCES [AspNetUsers] ([Id]) ON DELETE CASCADE +); +GO + + +CREATE INDEX [IX_AspNetRoleClaims_RoleId] ON [AspNetRoleClaims] ([RoleId]); +GO + +CREATE UNIQUE INDEX [RoleNameIndex] ON [AspNetRoles] ([NormalizedName]) WHERE [NormalizedName] IS NOT NULL; +GO + +CREATE INDEX [IX_AspNetUserClaims_UserId] ON [AspNetUserClaims] ([UserId]); +GO + +CREATE INDEX [IX_AspNetUserLogins_UserId] ON [AspNetUserLogins] ([UserId]); +GO + +CREATE INDEX [IX_AspNetUserRoles_RoleId] ON [AspNetUserRoles] ([RoleId]); +GO + +CREATE INDEX [EmailIndex] ON [AspNetUsers] ([NormalizedEmail]); +GO + +CREATE UNIQUE INDEX [UserNameIndex] ON [AspNetUsers] ([NormalizedUserName]) WHERE [NormalizedUserName] IS NOT NULL; +GO \ No newline at end of file diff --git a/samples/features/security/sql-ledger/azure-sql-database/setup/PopulateDatabase.sql b/samples/features/security/sql-ledger/azure-sql-database/setup/PopulateDatabase.sql new file mode 100644 index 00000000..e7df86c6 --- /dev/null +++ b/samples/features/security/sql-ledger/azure-sql-database/setup/PopulateDatabase.sql @@ -0,0 +1,374 @@ +DELETE FROM [dbo].[Employees]; +DELETE FROM [dbo].[AspNetRoles]; +DELETE FROM [dbo].[AspNetUsers]; +DELETE FROM [dbo].[AspNetUserRoles]; +GO + +DECLARE @SSN1 char(11) = '795-73-9833'; DECLARE @Salary1 Money = 61692.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN1, 'Catherine', 'Abel', @Salary1); +DECLARE @SSN2 char(11) = '990-00-6818'; DECLARE @Salary2 Money = 990.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN2, 'Kim', 'Abercrombie', @Salary2); +DECLARE @SSN3 char(11) = '009-37-3952'; DECLARE @Salary3 Money = 5684.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN3, 'Frances', 'Adams', @Salary3); +DECLARE @SSN4 char(11) = '708-44-3627'; DECLARE @Salary4 Money = 55415.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN4, 'Jay', 'Adams', @Salary4); +DECLARE @SSN5 char(11) = '447-62-6279'; DECLARE @Salary5 Money = 49744.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN5, 'Robert', 'Ahlering', @Salary5); +DECLARE @SSN6 char(11) = '872-78-4732'; DECLARE @Salary6 Money = 38584.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN6, 'Stanley', 'Alan', @Salary6); +DECLARE @SSN7 char(11) = '898-79-8701'; DECLARE @Salary7 Money = 11918.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN7, 'Paul', 'Alcorn', @Salary7); +DECLARE @SSN8 char(11) = '561-88-3757'; DECLARE @Salary8 Money = 17349.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN8, 'Mary', 'Alexander', @Salary8); +DECLARE @SSN9 char(11) = '904-55-0991'; DECLARE @Salary9 Money = 70796.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN9, 'Michelle', 'Alexander', @Salary9); +DECLARE @SSN10 char(11) = '293-95-6617'; DECLARE @Salary10 Money = 96956.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN10, 'Marvin', 'Allen', @Salary10); +DECLARE @SSN11 char(11) = '260-99-4784'; DECLARE @Salary11 Money = 18386.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN11, 'Oscar', 'Alpuerto', @Salary11); +DECLARE @SSN12 char(11) = '605-29-1370'; DECLARE @Salary12 Money = 72548.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN12, 'Ramona', 'Antrim', @Salary12); +DECLARE @SSN13 char(11) = '731-35-9387'; DECLARE @Salary13 Money = 72180.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN13, 'Thomas', 'Armstrong', @Salary13); +DECLARE @SSN14 char(11) = '854-76-1401'; DECLARE @Salary14 Money = 79054.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN14, 'John', 'Arthur', @Salary14); +DECLARE @SSN15 char(11) = '775-20-2697'; DECLARE @Salary15 Money = 6011.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN15, 'Chris', 'Ashton', @Salary15); +DECLARE @SSN16 char(11) = '117-79-5230'; DECLARE @Salary16 Money = 87089.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN16, 'Teresa', 'Atkinson', @Salary16); +DECLARE @SSN17 char(11) = '607-41-3750'; DECLARE @Salary17 Money = 72344.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN17, 'Stephen', 'Ayers', @Salary17); +DECLARE @SSN18 char(11) = '412-66-3694'; DECLARE @Salary18 Money = 33950.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN18, 'James', 'Bailey', @Salary18); +DECLARE @SSN19 char(11) = '775-63-2547'; DECLARE @Salary19 Money = 89945.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN19, 'Douglas', 'Baldwin', @Salary19); +DECLARE @SSN20 char(11) = '779-52-1722'; DECLARE @Salary20 Money = 73236.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN20, 'Wayne', 'Banack', @Salary20); +DECLARE @SSN21 char(11) = '647-03-0271'; DECLARE @Salary21 Money = 23861.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN21, 'Robert', 'Barker', @Salary21); +DECLARE @SSN22 char(11) = '353-98-6954'; DECLARE @Salary22 Money = 75812.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN22, 'John', 'Beaver', @Salary22); +DECLARE @SSN23 char(11) = '817-89-8819'; DECLARE @Salary23 Money = 19047.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN23, 'John', 'Beaver', @Salary23); +DECLARE @SSN24 char(11) = '611-82-6762'; DECLARE @Salary24 Money = 59478.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN24, 'Edna', 'Benson', @Salary24); +DECLARE @SSN25 char(11) = '665-55-5653'; DECLARE @Salary25 Money = 98459.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN25, 'Payton', 'Benson', @Salary25); +DECLARE @SSN26 char(11) = '947-37-8651'; DECLARE @Salary26 Money = 78183.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN26, 'Robert', 'Bernacchi', @Salary26); +DECLARE @SSN27 char(11) = '071-31-7824'; DECLARE @Salary27 Money = 79399.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN27, 'Robert', 'Bernacchi', @Salary27); +DECLARE @SSN28 char(11) = '610-55-3726'; DECLARE @Salary28 Money = 20209.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN28, 'Matthias', 'Berndt', @Salary28); +DECLARE @SSN29 char(11) = '590-27-0856'; DECLARE @Salary29 Money = 24730.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN29, 'Jimmy', 'Bischoff', @Salary29); +DECLARE @SSN30 char(11) = '008-73-9012'; DECLARE @Salary30 Money = 60057.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN30, 'Mae', 'Black', @Salary30); +DECLARE @SSN31 char(11) = '137-23-1723'; DECLARE @Salary31 Money = 65301.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN31, 'Donald', 'Blanton', @Salary31); +DECLARE @SSN32 char(11) = '969-53-6095'; DECLARE @Salary32 Money = 5635.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN32, 'Michael', 'Blythe', @Salary32); +DECLARE @SSN33 char(11) = '222-42-8458'; DECLARE @Salary33 Money = 41020.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN33, 'Gabriel', 'Bockenkamp', @Salary33); +DECLARE @SSN34 char(11) = '163-08-2988'; DECLARE @Salary34 Money = 85014.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN34, 'Luis', 'Bonifaz', @Salary34); +DECLARE @SSN35 char(11) = '898-11-0280'; DECLARE @Salary35 Money = 49351.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN35, 'Cory', 'Booth', @Salary35); +DECLARE @SSN36 char(11) = '432-52-2738'; DECLARE @Salary36 Money = 24063.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN36, 'Randall', 'Boseman', @Salary36); +DECLARE @SSN37 char(11) = '018-29-9539'; DECLARE @Salary37 Money = 91513.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN37, 'Cornelius', 'Brandon', @Salary37); +DECLARE @SSN38 char(11) = '472-36-9060'; DECLARE @Salary38 Money = 26084.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN38, 'Richard', 'Bready', @Salary38); +DECLARE @SSN39 char(11) = '566-87-9214'; DECLARE @Salary39 Money = 95506.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN39, 'Ted', 'Bremer', @Salary39); +DECLARE @SSN40 char(11) = '771-34-9714'; DECLARE @Salary40 Money = 35682.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN40, 'Alan', 'Brewer', @Salary40); +DECLARE @SSN41 char(11) = '413-73-7072'; DECLARE @Salary41 Money = 5198.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN41, 'Walter', 'Brian', @Salary41); +DECLARE @SSN42 char(11) = '497-65-6363'; DECLARE @Salary42 Money = 24216.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN42, 'Christopher', 'Bright', @Salary42); +DECLARE @SSN43 char(11) = '450-26-2195'; DECLARE @Salary43 Money = 55078.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN43, 'Willie', 'Brooks', @Salary43); +DECLARE @SSN44 char(11) = '052-78-7929'; DECLARE @Salary44 Money = 17396.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN44, 'Jo', 'Brown', @Salary44); +DECLARE @SSN45 char(11) = '087-92-6356'; DECLARE @Salary45 Money = 99872.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN45, 'Robert', 'Brown', @Salary45); +DECLARE @SSN46 char(11) = '048-71-8953'; DECLARE @Salary46 Money = 88633.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN46, 'Steven', 'Brown', @Salary46); +DECLARE @SSN47 char(11) = '488-68-6075'; DECLARE @Salary47 Money = 59229.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN47, 'Mary', 'Browning', @Salary47); +DECLARE @SSN48 char(11) = '819-63-3780'; DECLARE @Salary48 Money = 30996.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN48, 'Michael', 'Brundage', @Salary48); +DECLARE @SSN49 char(11) = '599-61-7739'; DECLARE @Salary49 Money = 35872.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN49, 'Shirley', 'Bruner', @Salary49); +DECLARE @SSN50 char(11) = '772-36-0661'; DECLARE @Salary50 Money = 84642.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN50, 'June', 'Brunner', @Salary50); +DECLARE @SSN51 char(11) = '990-78-3760'; DECLARE @Salary51 Money = 76800.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN51, 'Megan', 'Burke', @Salary51); +DECLARE @SSN52 char(11) = '103-38-5903'; DECLARE @Salary52 Money = 93306.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN52, 'Karren', 'Burkhardt', @Salary52); +DECLARE @SSN53 char(11) = '146-43-8832'; DECLARE @Salary53 Money = 56479.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN53, 'Linda', 'Burnett', @Salary53); +DECLARE @SSN54 char(11) = '448-72-5948'; DECLARE @Salary54 Money = 7997.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN54, 'Jared', 'Bustamante', @Salary54); +DECLARE @SSN55 char(11) = '254-13-4819'; DECLARE @Salary55 Money = 28720.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN55, 'Barbara', 'Calone', @Salary55); +DECLARE @SSN56 char(11) = '666-45-9926'; DECLARE @Salary56 Money = 11870.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN56, 'Lindsey', 'Camacho', @Salary56); +DECLARE @SSN57 char(11) = '260-46-2402'; DECLARE @Salary57 Money = 87501.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN57, 'Frank', 'Campbell', @Salary57); +DECLARE @SSN58 char(11) = '189-92-4702'; DECLARE @Salary58 Money = 30494.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN58, 'Henry', 'Campen', @Salary58); +DECLARE @SSN59 char(11) = '718-12-8401'; DECLARE @Salary59 Money = 2324.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN59, 'Chris', 'Cannon', @Salary59); +DECLARE @SSN60 char(11) = '918-66-9747'; DECLARE @Salary60 Money = 22620.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN60, 'Jane', 'Carmichael', @Salary60); +DECLARE @SSN61 char(11) = '806-97-1958'; DECLARE @Salary61 Money = 37601.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN61, 'Jovita', 'Carmody', @Salary61); +DECLARE @SSN62 char(11) = '482-61-8230'; DECLARE @Salary62 Money = 16904.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN62, 'Rob', 'Caron', @Salary62); +DECLARE @SSN63 char(11) = '897-39-6229'; DECLARE @Salary63 Money = 40261.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN63, 'Andy', 'Carothers', @Salary63); +DECLARE @SSN64 char(11) = '656-79-6279'; DECLARE @Salary64 Money = 78393.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN64, 'Donna', 'Carreras', @Salary64); +DECLARE @SSN65 char(11) = '745-99-0161'; DECLARE @Salary65 Money = 98109.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN65, 'Rosmarie', 'Carroll', @Salary65); +DECLARE @SSN66 char(11) = '216-16-4120'; DECLARE @Salary66 Money = 41706.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN66, 'Raul', 'Casts', @Salary66); +DECLARE @SSN67 char(11) = '102-56-5530'; DECLARE @Salary67 Money = 75290.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN67, 'Matthew', 'Cavallari', @Salary67); +DECLARE @SSN68 char(11) = '787-23-4125'; DECLARE @Salary68 Money = 75121.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN68, 'Andrew', 'Cencini', @Salary68); +DECLARE @SSN69 char(11) = '424-55-1778'; DECLARE @Salary69 Money = 25456.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN69, 'Stacey', 'Cereghino', @Salary69); +DECLARE @SSN70 char(11) = '572-19-0999'; DECLARE @Salary70 Money = 49996.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN70, 'Forrest', 'Chandler', @Salary70); +DECLARE @SSN71 char(11) = '745-81-6513'; DECLARE @Salary71 Money = 70991.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN71, 'Lee', 'Chapla', @Salary71); +DECLARE @SSN72 char(11) = '947-66-5585'; DECLARE @Salary72 Money = 72455.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN72, 'Yao-Qiang', 'Cheng', @Salary72); +DECLARE @SSN73 char(11) = '531-83-4784'; DECLARE @Salary73 Money = 13676.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN73, 'Nicky', 'Chesnut', @Salary73); +DECLARE @SSN74 char(11) = '109-99-0299'; DECLARE @Salary74 Money = 55818.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN74, 'Ruth', 'Choin', @Salary74); +DECLARE @SSN75 char(11) = '483-85-6853'; DECLARE @Salary75 Money = 71421.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN75, 'Anthony', 'Chor', @Salary75); +DECLARE @SSN76 char(11) = '567-39-1024'; DECLARE @Salary76 Money = 57284.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN76, 'Pei', 'Chow', @Salary76); +DECLARE @SSN77 char(11) = '382-49-7387'; DECLARE @Salary77 Money = 94767.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN77, 'Jill', 'Christie', @Salary77); +DECLARE @SSN78 char(11) = '336-03-8102'; DECLARE @Salary78 Money = 47963.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN78, 'Alice', 'Clark', @Salary78); +DECLARE @SSN79 char(11) = '994-22-9926'; DECLARE @Salary79 Money = 32136.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN79, 'Connie', 'Coffman', @Salary79); +DECLARE @SSN80 char(11) = '129-28-7723'; DECLARE @Salary80 Money = 82858.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN80, 'John', 'Colon', @Salary80); +DECLARE @SSN81 char(11) = '347-44-2949'; DECLARE @Salary81 Money = 1121.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN81, 'Scott', 'Colvin', @Salary81); +DECLARE @SSN82 char(11) = '706-66-0382'; DECLARE @Salary82 Money = 22281.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN82, 'Scott', 'Cooper', @Salary82); +DECLARE @SSN83 char(11) = '500-63-2220'; DECLARE @Salary83 Money = 34410.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN83, 'Eva', 'Corets', @Salary83); +DECLARE @SSN84 char(11) = '942-15-7859'; DECLARE @Salary84 Money = 43154.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN84, 'Marlin', 'Coriell', @Salary84); +DECLARE @SSN85 char(11) = '143-78-9971'; DECLARE @Salary85 Money = 66527.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN85, 'Jack', 'Creasey', @Salary85); +DECLARE @SSN86 char(11) = '372-18-7905'; DECLARE @Salary86 Money = 69903.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN86, 'Grant', 'Culbertson', @Salary86); +DECLARE @SSN87 char(11) = '153-33-1155'; DECLARE @Salary87 Money = 87717.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN87, 'Scott', 'Culp', @Salary87); +DECLARE @SSN89 char(11) = '790-69-5423'; DECLARE @Salary89 Money = 69707.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN89, 'Megan', 'Davis', @Salary89); +DECLARE @SSN90 char(11) = '105-16-8373'; DECLARE @Salary90 Money = 15198.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN90, 'Alvaro', 'De Matos Miranda Filho', @Salary90); +DECLARE @SSN91 char(11) = '989-18-3523'; DECLARE @Salary91 Money = 86115.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN91, 'Aidan', 'Delaney', @Salary91); +DECLARE @SSN92 char(11) = '771-07-7325'; DECLARE @Salary92 Money = 50994.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN92, 'Stefan', 'Delmarco', @Salary92); +DECLARE @SSN93 char(11) = '545-83-9747'; DECLARE @Salary93 Money = 97968.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN93, 'Prashanth', 'Desai', @Salary93); +DECLARE @SSN94 char(11) = '994-72-1605'; DECLARE @Salary94 Money = 76954.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN94, 'Bev', 'Desalvo', @Salary94); +DECLARE @SSN95 char(11) = '558-23-5595'; DECLARE @Salary95 Money = 4027.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN95, 'Brenda', 'Diaz', @Salary95); +DECLARE @SSN96 char(11) = '752-63-1338'; DECLARE @Salary96 Money = 12312.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN96, 'Blaine', 'Dockter', @Salary96); +DECLARE @SSN97 char(11) = '825-10-8923'; DECLARE @Salary97 Money = 82876.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN97, 'Cindy', 'Dodd', @Salary97); +DECLARE @SSN98 char(11) = '368-69-8964'; DECLARE @Salary98 Money = 97282.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN98, 'Patricia', 'Doyle', @Salary98); +DECLARE @SSN99 char(11) = '597-44-1424'; DECLARE @Salary99 Money = 20153.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN99, 'Gerald', 'Drury', @Salary99); +DECLARE @SSN100 char(11) = '957-28-1545'; DECLARE @Salary100 Money = 89903.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN100, 'Bart', 'Duncan', @Salary100); +DECLARE @SSN101 char(11) = '187-17-8616'; DECLARE @Salary101 Money = 6725.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN101, 'Maciej', 'Dusza', @Salary101); +DECLARE @SSN102 char(11) = '194-76-9481'; DECLARE @Salary102 Money = 49287.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN102, 'Carol', 'Elliott', @Salary102); +DECLARE @SSN103 char(11) = '679-79-8165'; DECLARE @Salary103 Money = 94194.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN103, 'Shannon', 'Elliott', @Salary103); +DECLARE @SSN104 char(11) = '367-73-8845'; DECLARE @Salary104 Money = 65560.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN104, 'John', 'Emory', @Salary104); +DECLARE @SSN105 char(11) = '814-03-3691'; DECLARE @Salary105 Money = 99845.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN105, 'Gail', 'Erickson', @Salary105); +DECLARE @SSN106 char(11) = '214-28-9968'; DECLARE @Salary106 Money = 95242.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN106, 'Mark', 'Erickson', @Salary106); +DECLARE @SSN107 char(11) = '913-55-6645'; DECLARE @Salary107 Money = 48046.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN107, 'Ann', 'Evans', @Salary107); +DECLARE @SSN108 char(11) = '763-33-5650'; DECLARE @Salary108 Money = 59254.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN108, 'John', 'Evans', @Salary108); +DECLARE @SSN109 char(11) = '658-41-8532'; DECLARE @Salary109 Money = 35364.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN109, 'Twanna', 'Evans', @Salary109); +DECLARE @SSN110 char(11) = '943-41-6011'; DECLARE @Salary110 Money = 76201.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN110, 'Carolyn', 'Farino', @Salary110); +DECLARE @SSN111 char(11) = '691-30-8623'; DECLARE @Salary111 Money = 39600.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN111, 'Geri', 'Farrell', @Salary111); +DECLARE @SSN112 char(11) = '361-08-3217'; DECLARE @Salary112 Money = 3704.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN112, 'François', 'Ferrier', @Salary112); +DECLARE @SSN113 char(11) = '827-51-1487'; DECLARE @Salary113 Money = 78467.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN113, 'Kathie', 'Flood', @Salary113); +DECLARE @SSN114 char(11) = '483-93-0057'; DECLARE @Salary114 Money = 77552.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN114, 'John', 'Ford', @Salary114); +DECLARE @SSN115 char(11) = '738-37-1607'; DECLARE @Salary115 Money = 34381.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN115, 'Garth', 'Fort', @Salary115); +DECLARE @SSN116 char(11) = '822-59-9384'; DECLARE @Salary116 Money = 32679.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN116, 'Dorothy', 'Fox', @Salary116); +DECLARE @SSN117 char(11) = '309-79-2521'; DECLARE @Salary117 Money = 52898.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN117, 'Mihail', 'Frintu', @Salary117); +DECLARE @SSN118 char(11) = '814-32-0421'; DECLARE @Salary118 Money = 1320.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN118, 'Paul', 'Fulton', @Salary118); +DECLARE @SSN119 char(11) = '076-35-8143'; DECLARE @Salary119 Money = 24061.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN119, 'Michael', 'Galos', @Salary119); +DECLARE @SSN120 char(11) = '620-03-4764'; DECLARE @Salary120 Money = 70002.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN120, 'Jon', 'Ganio', @Salary120); +DECLARE @SSN121 char(11) = '769-76-3600'; DECLARE @Salary121 Money = 89479.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN121, 'Dominic', 'Gash', @Salary121); +DECLARE @SSN122 char(11) = '160-92-3129'; DECLARE @Salary122 Money = 49178.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN122, 'Janet', 'Gates', @Salary122); +DECLARE @SSN123 char(11) = '318-00-6667'; DECLARE @Salary123 Money = 68327.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN123, 'Janet', 'Gates', @Salary123); +DECLARE @SSN124 char(11) = '982-77-3975'; DECLARE @Salary124 Money = 53281.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN124, 'Orlando', 'Gee', @Salary124); +DECLARE @SSN125 char(11) = '328-68-1544'; DECLARE @Salary125 Money = 13353.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN125, 'Darren', 'Gehring', @Salary125); +DECLARE @SSN126 char(11) = '053-51-9173'; DECLARE @Salary126 Money = 91180.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN126, 'Jim', 'Geist', @Salary126); +DECLARE @SSN127 char(11) = '840-05-6646'; DECLARE @Salary127 Money = 3780.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN127, 'Guy', 'Gilbert', @Salary127); +DECLARE @SSN128 char(11) = '446-11-2924'; DECLARE @Salary128 Money = 89588.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN128, 'Janet', 'Gilliat', @Salary128); +DECLARE @SSN129 char(11) = '273-16-2522'; DECLARE @Salary129 Money = 53352.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN129, 'Mary', 'Gimmi', @Salary129); +DECLARE @SSN130 char(11) = '003-23-9305'; DECLARE @Salary130 Money = 49086.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN130, 'Jeanie', 'Glenn', @Salary130); +DECLARE @SSN131 char(11) = '878-44-1968'; DECLARE @Salary131 Money = 2744.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN131, 'Scott', 'Gode', @Salary131); +DECLARE @SSN132 char(11) = '910-05-4138'; DECLARE @Salary132 Money = 89053.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN132, 'Mete', 'Goktepe', @Salary132); +DECLARE @SSN133 char(11) = '912-33-3174'; DECLARE @Salary133 Money = 56550.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN133, 'Abigail', 'Gonzalez', @Salary133); +DECLARE @SSN134 char(11) = '058-26-3234'; DECLARE @Salary134 Money = 41144.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN134, 'Michael', 'Graff', @Salary134); +DECLARE @SSN135 char(11) = '687-28-3396'; DECLARE @Salary135 Money = 22262.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN135, 'Douglas', 'Groncki', @Salary135); +DECLARE @SSN136 char(11) = '496-75-4904'; DECLARE @Salary136 Money = 35712.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN136, 'Brian', 'Groth', @Salary136); +DECLARE @SSN137 char(11) = '071-00-8057'; DECLARE @Salary137 Money = 48197.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN137, 'Erin', 'Hagens', @Salary137); +DECLARE @SSN138 char(11) = '288-05-9705'; DECLARE @Salary138 Money = 6286.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN138, 'Betty', 'Haines', @Salary138); +DECLARE @SSN139 char(11) = '002-47-6040'; DECLARE @Salary139 Money = 22940.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN139, 'Jean', 'Handley', @Salary139); +DECLARE @SSN140 char(11) = '936-84-1664'; DECLARE @Salary140 Money = 80093.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN140, 'Kerim', 'Hanif', @Salary140); +DECLARE @SSN141 char(11) = '216-03-0835'; DECLARE @Salary141 Money = 10237.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN141, 'John', 'Hanson', @Salary141); +DECLARE @SSN142 char(11) = '525-81-0810'; DECLARE @Salary142 Money = 69388.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN142, 'Lucy', 'Harrington', @Salary142); +DECLARE @SSN143 char(11) = '331-25-9319'; DECLARE @Salary143 Money = 7729.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN143, 'Keith', 'Harris', @Salary143); +DECLARE @SSN144 char(11) = '770-01-5105'; DECLARE @Salary144 Money = 67336.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN144, 'Keith', 'Harris', @Salary144); +DECLARE @SSN145 char(11) = '208-84-9956'; DECLARE @Salary145 Money = 78271.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN145, 'Roger', 'Harui', @Salary145); +DECLARE @SSN146 char(11) = '633-34-5095'; DECLARE @Salary146 Money = 62689.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN146, 'Ann', 'Hass', @Salary146); +DECLARE @SSN147 char(11) = '022-89-0200'; DECLARE @Salary147 Money = 10269.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN147, 'Valerie', 'Hendricks', @Salary147); +DECLARE @SSN148 char(11) = '912-85-8027'; DECLARE @Salary148 Money = 95103.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN148, 'Cheryl', 'Herring', @Salary148); +DECLARE @SSN149 char(11) = '307-29-4403'; DECLARE @Salary149 Money = 30421.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN149, 'Ronald', 'Heymsfield', @Salary149); +DECLARE @SSN150 char(11) = '083-68-5072'; DECLARE @Salary150 Money = 35109.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN150, 'Mike', 'Hines', @Salary150); +DECLARE @SSN151 char(11) = '239-20-6174'; DECLARE @Salary151 Money = 75140.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN151, 'Matthew', 'Hink', @Salary151); +DECLARE @SSN152 char(11) = '162-43-8489'; DECLARE @Salary152 Money = 84875.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN152, 'Bob', 'Hodges', @Salary152); +DECLARE @SSN153 char(11) = '717-37-3032'; DECLARE @Salary153 Money = 15920.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN153, 'David', 'Hodgson', @Salary153); +DECLARE @SSN154 char(11) = '280-15-5623'; DECLARE @Salary154 Money = 23680.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN154, 'Helge', 'Hoeing', @Salary154); +DECLARE @SSN155 char(11) = '353-00-9496'; DECLARE @Salary155 Money = 83632.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN155, 'Juanita', 'Holman', @Salary155); +DECLARE @SSN156 char(11) = '162-65-6542'; DECLARE @Salary156 Money = 6335.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN156, 'Peter', 'Houston', @Salary156); +DECLARE @SSN157 char(11) = '427-43-7296'; DECLARE @Salary157 Money = 90908.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN157, 'George', 'Huckaby', @Salary157); +DECLARE @SSN158 char(11) = '603-61-0319'; DECLARE @Salary158 Money = 55166.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN158, 'Joshua', 'Huff', @Salary158); +DECLARE @SSN159 char(11) = '877-01-3415'; DECLARE @Salary159 Money = 58528.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN159, 'Phyllis', 'Huntsman', @Salary159); +DECLARE @SSN160 char(11) = '391-25-8382'; DECLARE @Salary160 Money = 86920.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN160, 'Phyllis', 'Huntsman', @Salary160); +DECLARE @SSN161 char(11) = '626-56-2930'; DECLARE @Salary161 Money = 11698.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN161, 'Lawrence', 'Hurkett', @Salary161); +DECLARE @SSN162 char(11) = '731-19-3470'; DECLARE @Salary162 Money = 83202.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN162, 'Lucio', 'Iallo', @Salary162); +DECLARE @SSN163 char(11) = '171-33-3481'; DECLARE @Salary163 Money = 83990.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN163, 'Richard', 'Irwin', @Salary163); +DECLARE @SSN164 char(11) = '828-77-1376'; DECLARE @Salary164 Money = 7706.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN164, 'Erik', 'Ismert', @Salary164); +DECLARE @SSN165 char(11) = '611-48-4137'; DECLARE @Salary165 Money = 784.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN165, 'Eric', 'Jacobsen', @Salary165); +DECLARE @SSN166 char(11) = '477-14-7161'; DECLARE @Salary166 Money = 17695.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN166, 'Jodan', 'Jacobson', @Salary166); +DECLARE @SSN167 char(11) = '738-83-2602'; DECLARE @Salary167 Money = 9412.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN167, 'Sean', 'Jacobson', @Salary167); +DECLARE @SSN168 char(11) = '589-30-3617'; DECLARE @Salary168 Money = 42556.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN168, 'Joyce', 'Jarvis', @Salary168); +DECLARE @SSN169 char(11) = '538-28-5108'; DECLARE @Salary169 Money = 36190.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN169, 'Barry', 'Johnson', @Salary169); +DECLARE @SSN170 char(11) = '661-09-8547'; DECLARE @Salary170 Money = 80820.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN170, 'Barry', 'Johnson', @Salary170); +DECLARE @SSN171 char(11) = '025-55-7602'; DECLARE @Salary171 Money = 54767.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN171, 'Brian', 'Johnson', @Salary171); +DECLARE @SSN172 char(11) = '422-34-6020'; DECLARE @Salary172 Money = 26695.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN172, 'David', 'Johnson', @Salary172); +DECLARE @SSN173 char(11) = '500-92-8728'; DECLARE @Salary173 Money = 52805.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN173, 'Tom', 'Johnston', @Salary173); +DECLARE @SSN174 char(11) = '170-89-3691'; DECLARE @Salary174 Money = 68936.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN174, 'Jean', 'Jordan', @Salary174); +DECLARE @SSN175 char(11) = '108-25-0733'; DECLARE @Salary175 Money = 39764.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN175, 'Peggy', 'Justice', @Salary175); +DECLARE @SSN176 char(11) = '392-44-2253'; DECLARE @Salary176 Money = 84549.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN176, 'Sandeep', 'Kaliyath', @Salary176); +DECLARE @SSN177 char(11) = '666-10-8497'; DECLARE @Salary177 Money = 27585.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN177, 'Sandeep', 'Katyal', @Salary177); +DECLARE @SSN178 char(11) = '738-29-5963'; DECLARE @Salary178 Money = 31491.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN178, 'John', 'Kelly', @Salary178); +DECLARE @SSN179 char(11) = '253-47-6467'; DECLARE @Salary179 Money = 43239.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN179, 'Robert', 'Kelly', @Salary179); +DECLARE @SSN180 char(11) = '059-47-6363'; DECLARE @Salary180 Money = 18192.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN180, 'Kevin', 'Kennedy', @Salary180); +DECLARE @SSN181 char(11) = '382-51-9530'; DECLARE @Salary181 Money = 68959.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN181, 'Mitch', 'Kennedy', @Salary181); +DECLARE @SSN182 char(11) = '480-79-4419'; DECLARE @Salary182 Money = 66870.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN182, 'Imtiaz', 'Khan', @Salary182); +DECLARE @SSN183 char(11) = '097-39-6667'; DECLARE @Salary183 Money = 17048.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN183, 'Karan', 'Khanna', @Salary183); +DECLARE @SSN184 char(11) = '625-86-1609'; DECLARE @Salary184 Money = 97398.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN184, 'Anton', 'Kirilov', @Salary184); +DECLARE @SSN185 char(11) = '109-78-5455'; DECLARE @Salary185 Money = 22492.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN185, 'Christian', 'Kleinerman', @Salary185); +DECLARE @SSN186 char(11) = '914-28-0431'; DECLARE @Salary186 Money = 47853.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN186, 'Andrew', 'Kobylinski', @Salary186); +DECLARE @SSN187 char(11) = '428-15-1588'; DECLARE @Salary187 Money = 61377.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN187, 'Eugene', 'Kogan', @Salary187); +DECLARE @SSN188 char(11) = '612-70-0567'; DECLARE @Salary188 Money = 87060.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN188, 'Scott', 'Konersmann', @Salary188); +DECLARE @SSN189 char(11) = '025-76-2628'; DECLARE @Salary189 Money = 165.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN189, 'Joy', 'Koski', @Salary189); +DECLARE @SSN190 char(11) = '920-75-2262'; DECLARE @Salary190 Money = 12316.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN190, 'Diane', 'Krane', @Salary190); +DECLARE @SSN191 char(11) = '748-12-0172'; DECLARE @Salary191 Money = 13614.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN191, 'Kay', 'Krane', @Salary191); +DECLARE @SSN192 char(11) = '230-78-1884'; DECLARE @Salary192 Money = 98499.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN192, 'Kay', 'Krane', @Salary192); +DECLARE @SSN193 char(11) = '121-03-7961'; DECLARE @Salary193 Money = 98845.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN193, 'Margaret', 'Krupka', @Salary193); +DECLARE @SSN194 char(11) = '993-16-0574'; DECLARE @Salary194 Money = 67823.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN194, 'Peter', 'Kurniawan', @Salary194); +DECLARE @SSN195 char(11) = '560-17-8321'; DECLARE @Salary195 Money = 18840.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN195, 'Jeffrey', 'Kurtz', @Salary195); +DECLARE @SSN196 char(11) = '176-23-2126'; DECLARE @Salary196 Money = 39005.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN196, 'Eric', 'Lang', @Salary196); +DECLARE @SSN197 char(11) = '678-53-5154'; DECLARE @Salary197 Money = 71752.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN197, 'Elsa', 'Leavitt', @Salary197); +DECLARE @SSN198 char(11) = '950-17-4726'; DECLARE @Salary198 Money = 28116.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN198, 'Marjorie', 'Lee', @Salary198); +DECLARE @SSN199 char(11) = '649-28-8360'; DECLARE @Salary199 Money = 75588.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN199, 'Roger', 'Lengel', @Salary199); +DECLARE @SSN200 char(11) = '507-95-7549'; DECLARE @Salary200 Money = 71639.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN200, 'A.', 'Leonetti', @Salary200); +DECLARE @SSN201 char(11) = '442-99-4943'; DECLARE @Salary201 Money = 9089.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN201, 'Bonnie', 'Lepro', @Salary201); +DECLARE @SSN202 char(11) = '674-71-8512'; DECLARE @Salary202 Money = 93630.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN202, 'Elsie', 'Lewin', @Salary202); +DECLARE @SSN203 char(11) = '418-20-4458'; DECLARE @Salary203 Money = 74540.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN203, 'George', 'Li', @Salary203); +DECLARE @SSN204 char(11) = '986-20-3872'; DECLARE @Salary204 Money = 96968.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN204, 'Joseph', 'Lique', @Salary204); +DECLARE @SSN205 char(11) = '716-41-6291'; DECLARE @Salary205 Money = 11243.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN205, 'Paulo', 'Lisboa', @Salary205); +DECLARE @SSN206 char(11) = '475-64-2482'; DECLARE @Salary206 Money = 84392.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN206, 'Paulo', 'Lisboa', @Salary206); +DECLARE @SSN207 char(11) = '471-03-3608'; DECLARE @Salary207 Money = 57309.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN207, 'David', 'Liu', @Salary207); +DECLARE @SSN208 char(11) = '440-49-4765'; DECLARE @Salary208 Money = 34991.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN208, 'Jinghao', 'Liu', @Salary208); +DECLARE @SSN209 char(11) = '321-33-7277'; DECLARE @Salary209 Money = 20305.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN209, 'Kevin', 'Liu', @Salary209); +DECLARE @SSN210 char(11) = '113-69-0506'; DECLARE @Salary210 Money = 5368.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN210, 'Sharon', 'Looney', @Salary210); +DECLARE @SSN211 char(11) = '311-21-1551'; DECLARE @Salary211 Money = 15667.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN211, 'Judy', 'Lundahl', @Salary211); +DECLARE @SSN212 char(11) = '710-73-5330'; DECLARE @Salary212 Money = 2258.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN212, 'Denise', 'Maccietto', @Salary212); +DECLARE @SSN213 char(11) = '321-14-1319'; DECLARE @Salary213 Money = 30158.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN213, 'Scott', 'MacDonald', @Salary213); +DECLARE @SSN214 char(11) = '340-75-5874'; DECLARE @Salary214 Money = 10228.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN214, 'Kathy', 'Marcovecchio', @Salary214); +DECLARE @SSN215 char(11) = '043-85-0648'; DECLARE @Salary215 Money = 46100.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN215, 'Melissa', 'Marple', @Salary215); +DECLARE @SSN216 char(11) = '253-33-7509'; DECLARE @Salary216 Money = 46267.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN216, 'Frank', 'Mart¡nez', @Salary216); +DECLARE @SSN217 char(11) = '335-68-4629'; DECLARE @Salary217 Money = 92921.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN217, 'Chris', 'Maxwell', @Salary217); +DECLARE @SSN218 char(11) = '535-30-6577'; DECLARE @Salary218 Money = 60264.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN218, 'Sandra', 'Maynard', @Salary218); +DECLARE @SSN219 char(11) = '613-34-9127'; DECLARE @Salary219 Money = 70620.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN219, 'Walter', 'Mays', @Salary219); +DECLARE @SSN220 char(11) = '754-70-9484'; DECLARE @Salary220 Money = 75175.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN220, 'Lola', 'McCarthy', @Salary220); +DECLARE @SSN221 char(11) = '758-46-9282'; DECLARE @Salary221 Money = 78021.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN221, 'Jane', 'McCarty', @Salary221); +DECLARE @SSN222 char(11) = '287-44-2853'; DECLARE @Salary222 Money = 38787.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN222, 'Yvonne', 'McKay', @Salary222); +DECLARE @SSN223 char(11) = '173-12-0893'; DECLARE @Salary223 Money = 27222.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN223, 'Nkenge', 'McLin', @Salary223); +DECLARE @SSN224 char(11) = '028-18-1290'; DECLARE @Salary224 Money = 80464.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN224, 'R. Morgan', 'Mendoza', @Salary224); +DECLARE @SSN225 char(11) = '035-47-1686'; DECLARE @Salary225 Money = 79306.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN225, 'Helen', 'Meyer', @Salary225); +DECLARE @SSN226 char(11) = '926-47-4349'; DECLARE @Salary226 Money = 64819.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN226, 'Dylan', 'Miller', @Salary226); +DECLARE @SSN227 char(11) = '947-84-3762'; DECLARE @Salary227 Money = 97091.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN227, 'Frank', 'Miller', @Salary227); +DECLARE @SSN228 char(11) = '598-00-4792'; DECLARE @Salary228 Money = 77286.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN228, 'Virginia', 'Miller', @Salary228); +DECLARE @SSN229 char(11) = '069-59-6908'; DECLARE @Salary229 Money = 57881.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN229, 'Virginia', 'Miller', @Salary229); +DECLARE @SSN230 char(11) = '864-49-8796'; DECLARE @Salary230 Money = 36848.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN230, 'Neva', 'Mitchell', @Salary230); +DECLARE @SSN231 char(11) = '484-78-0561'; DECLARE @Salary231 Money = 42987.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN231, 'Joseph', 'Mitzner', @Salary231); +DECLARE @SSN232 char(11) = '684-27-6433'; DECLARE @Salary232 Money = 46020.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN232, 'Margaret', 'Smith', @Salary232); +DECLARE @SSN233 char(11) = '521-85-5433'; DECLARE @Salary233 Money = 87969.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN233, 'Laura', 'Steele', @Salary233); +DECLARE @SSN234 char(11) = '239-08-6212'; DECLARE @Salary234 Money = 71635.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN234, 'Alan', 'Steiner', @Salary234); +DECLARE @SSN235 char(11) = '655-64-2836'; DECLARE @Salary235 Money = 60544.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN235, 'Alice', 'Steiner', @Salary235); +DECLARE @SSN236 char(11) = '850-56-7206'; DECLARE @Salary236 Money = 16798.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN236, 'Derik', 'Stenerson', @Salary236); +DECLARE @SSN237 char(11) = '077-42-9130'; DECLARE @Salary237 Money = 55399.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN237, 'Vassar', 'Stern', @Salary237); +DECLARE @SSN238 char(11) = '094-90-4314'; DECLARE @Salary238 Money = 20296.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN238, 'Wathalee', 'Steuber', @Salary238); +DECLARE @SSN239 char(11) = '409-83-6433'; DECLARE @Salary239 Money = 6631.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN239, 'Liza Marie', 'Stevens', @Salary239); +DECLARE @SSN240 char(11) = '351-34-7304'; DECLARE @Salary240 Money = 88774.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN240, 'Robert', 'Stotka', @Salary240); +DECLARE @SSN241 char(11) = '866-96-8557'; DECLARE @Salary241 Money = 19835.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN241, 'Kayla', 'Stotler', @Salary241); +DECLARE @SSN242 char(11) = '716-37-0786'; DECLARE @Salary242 Money = 38058.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN242, 'Ruth', 'Suffin', @Salary242); +DECLARE @SSN243 char(11) = '689-86-1583'; DECLARE @Salary243 Money = 98566.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN243, 'Elizabeth', 'Sullivan', @Salary243); +DECLARE @SSN244 char(11) = '622-25-6018'; DECLARE @Salary244 Money = 9242.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN244, 'Michael', 'Sullivan', @Salary244); +DECLARE @SSN245 char(11) = '137-21-0253'; DECLARE @Salary245 Money = 44883.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN245, 'Brad', 'Sutton', @Salary245); +DECLARE @SSN246 char(11) = '237-99-8262'; DECLARE @Salary246 Money = 85958.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN246, 'Abraham', 'Swearengin', @Salary246); +DECLARE @SSN247 char(11) = '518-41-6271'; DECLARE @Salary247 Money = 63622.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN247, 'Julie', 'Taft-Rider', @Salary247); +DECLARE @SSN248 char(11) = '554-31-5202'; DECLARE @Salary248 Money = 25188.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN248, 'Clarence', 'Tatman', @Salary248); +DECLARE @SSN249 char(11) = '591-44-7136'; DECLARE @Salary249 Money = 22306.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN249, 'Chad', 'Tedford', @Salary249); +DECLARE @SSN250 char(11) = '069-09-3831'; DECLARE @Salary250 Money = 44398.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN250, 'Vanessa', 'Tench', @Salary250); +DECLARE @SSN251 char(11) = '523-93-8801'; DECLARE @Salary251 Money = 89067.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN251, 'Judy', 'Thames', @Salary251); +DECLARE @SSN252 char(11) = '266-03-4963'; DECLARE @Salary252 Money = 36910.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN252, 'Daniel', 'Thompson', @Salary252); +DECLARE @SSN253 char(11) = '496-54-0726'; DECLARE @Salary253 Money = 85206.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN253, 'Donald', 'Thompson', @Salary253); +DECLARE @SSN254 char(11) = '984-43-6756'; DECLARE @Salary254 Money = 7375.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN254, 'Kendra', 'Thompson', @Salary254); +DECLARE @SSN255 char(11) = '047-31-4129'; DECLARE @Salary255 Money = 95073.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN255, 'Diane', 'Tibbott', @Salary255); +DECLARE @SSN256 char(11) = '217-20-9777'; DECLARE @Salary256 Money = 17369.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN256, 'Delia', 'Toone', @Salary256); +DECLARE @SSN257 char(11) = '420-28-0429'; DECLARE @Salary257 Money = 69381.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN257, 'Michael John', 'Troyer', @Salary257); +DECLARE @SSN258 char(11) = '236-75-2355'; DECLARE @Salary258 Money = 79299.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN258, 'Christie', 'Trujillo', @Salary258); +DECLARE @SSN259 char(11) = '984-20-5166'; DECLARE @Salary259 Money = 41036.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN259, 'Sairaj', 'Uddin', @Salary259); +DECLARE @SSN260 char(11) = '353-75-0098'; DECLARE @Salary260 Money = 23245.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN260, 'Sunil', 'Uppal', @Salary260); +DECLARE @SSN261 char(11) = '934-96-8406'; DECLARE @Salary261 Money = 62357.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN261, 'Jessie', 'Valerio', @Salary261); +DECLARE @SSN262 char(11) = '773-23-3159'; DECLARE @Salary262 Money = 21434.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN262, 'Gregory', 'Vanderbout', @Salary262); +DECLARE @SSN263 char(11) = '951-08-3331'; DECLARE @Salary263 Money = 72246.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN263, 'Michael', 'Vanderhyde', @Salary263); +DECLARE @SSN264 char(11) = '856-23-4990'; DECLARE @Salary264 Money = 18918.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN264, 'Margaret', 'Vanderkamp', @Salary264); +DECLARE @SSN265 char(11) = '359-67-5826'; DECLARE @Salary265 Money = 37729.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN265, 'Gary', 'Vargas', @Salary265); +DECLARE @SSN266 char(11) = '743-66-8203'; DECLARE @Salary266 Money = 61754.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN266, 'Nieves', 'Vargas', @Salary266); +DECLARE @SSN267 char(11) = '368-97-5673'; DECLARE @Salary267 Money = 19423.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN267, 'Ranjit', 'Varkey Chudukatil', @Salary267); +DECLARE @SSN268 char(11) = '890-04-1424'; DECLARE @Salary268 Money = 59489.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN268, 'Patricia', 'Vasquez', @Salary268); +DECLARE @SSN269 char(11) = '267-37-1036'; DECLARE @Salary269 Money = 11749.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN269, 'Wanda', 'Vernon', @Salary269); +DECLARE @SSN270 char(11) = '101-14-5907'; DECLARE @Salary270 Money = 58459.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN270, 'Robert', 'Vessa', @Salary270); +DECLARE @SSN271 char(11) = '148-51-2717'; DECLARE @Salary271 Money = 83361.00; INSERT INTO [dbo].[Employees] ([SSN], [FirstName], [LastName], [Salary]) VALUES (@SSN271, 'Caroline', 'Vicknair', @Salary271); + +INSERT INTO [dbo].[AspNetRoles] ( + [Id] + , [Name] + , [NormalizedName] + , [ConcurrencyStamp] +) +VALUES (2, 'Auditor', 'Auditor', NULL); + +INSERT INTO [dbo].[AspNetRoles] ( + [Id] + , [Name] + , [NormalizedName] + , [ConcurrencyStamp] +) +VALUES (1, 'HRManager', 'HRManager', NULL); + +INSERT INTO [dbo].[AspNetUsers] ( + [Id] + ,[UserName] + ,[NormalizedUserName] + ,[Email] + ,[NormalizedEmail] + ,[EmailConfirmed] + ,[PasswordHash] + ,[SecurityStamp] + ,[ConcurrencyStamp] + ,[PhoneNumber] + ,[PhoneNumberConfirmed] + ,[TwoFactorEnabled] + ,[LockoutEnd] + ,[LockoutEnabled] + ,[AccessFailedCount] +) +VALUES ( + '23dc01d7-fb80-4e64-9851-7d540866732d' + , 'rachel@contoso.com' + , 'RACHEL@CONTOSO.COM' + , 'rachel@contoso.com' + , 'RACHEL@CONTOSO.COM' + , 1 + , 'AQAAAAEAACcQAAAAEIoraEzOKP3gywgo+Q7Mj/6ljYUbuaQLHA70v+cnus2JwiaTbE/xokWOr+7jM4Cksw==' + , 'U3UZHU63YJITH63GTS2QUVC63INHGEUC' + , '68cc60f2-dda3-4227-84a8-64b4e7b03e89' + , NULL + , 0 + , 0 + , NULL + , 1 + , 0 +); + +INSERT INTO [dbo].[AspNetUsers] ( + [Id] + ,[UserName] + ,[NormalizedUserName] + ,[Email] + ,[NormalizedEmail] + ,[EmailConfirmed] + ,[PasswordHash] + ,[SecurityStamp] + ,[ConcurrencyStamp] + ,[PhoneNumber] + ,[PhoneNumberConfirmed] + ,[TwoFactorEnabled] + ,[LockoutEnd] + ,[LockoutEnabled] + ,[AccessFailedCount] +) +VALUES ( + '68aec293-a9e1-4b72-8a07-dd869f0ab119' + , 'alice@contoso.com' + , 'ALICE@CONTOSO.COM' + , 'alice@contoso.com' + , 'ALICE@CONTOSO.COM' + , 1 + , 'AQAAAAEAACcQAAAAELP4ohm+ICIVcEUgqVBudM7ksgknW1X+Cyo+N9lBhMxAFEeJO+S+yo5HEVksc1aOpw==' + , '4Q7OJLZYKVQOXROFCVMZZA55ME76VWPV' + , 'df582ae0-db2f-4cda-838b-1b020e80970b' + , NULL + , 0 + , 0 + , NULL + , 1 + , 0 +); + +INSERT INTO [dbo].[AspNetUserRoles] ( + [UserId] + ,[RoleId] +) +VALUES ('23dc01d7-fb80-4e64-9851-7d540866732d', 1); + +INSERT INTO [dbo].[AspNetUserRoles] ( + [UserId] + ,[RoleId] +) +VALUES ('68aec293-a9e1-4b72-8a07-dd869f0ab119', 2); \ No newline at end of file diff --git a/samples/features/security/sql-ledger/azure-sql-database/setup/azuredeploy.bicep b/samples/features/security/sql-ledger/azure-sql-database/setup/azuredeploy.bicep new file mode 100644 index 00000000..8d2e5809 --- /dev/null +++ b/samples/features/security/sql-ledger/azure-sql-database/setup/azuredeploy.bicep @@ -0,0 +1,187 @@ +/////////////////////// +// Define parameters // +/////////////////////// + +@description('The project name. The names of all resources will be derived from the project name.') +param projectName string + +@description('The object id of the user running the deployment.') +param userObjectId string + +@description('The username of the user running the deployment.') +param userName string + +@description('The username of the Azure SQL database server administrator for SQL authentication.') +param sqlAdminUserName string + +@description('The password of the Azure SQL database server administrator for SQL authentication.') +param sqlAdminPassword string + +@description('The IP address the user will connect from to the logical server in Azure SQL Database.') +param clientIP string + +@description('The location (the Azure region) for all resources.') +param location string = resourceGroup().location + + +//////////////////////////////////////////// +// Create and configure a logical server // +//////////////////////////////////////////// + +// Create the server +var SQLServerName_var = '${projectName}server' +resource Server_Name_resource 'Microsoft.Sql/servers@2021-08-01-preview' = { + name: SQLServerName_var + location: location + tags: {} + identity: { + type: 'SystemAssigned' + } + properties: { + administratorLogin: sqlAdminUserName + administratorLoginPassword: sqlAdminPassword + minimalTlsVersion: '1.2' + publicNetworkAccess: 'Enabled' + } +} + +// Allow Azure services and resources to access this server +resource Server_Name_AllowAllWindowsAzureIps 'Microsoft.Sql/servers/firewallRules@2021-08-01-preview' = { + name: '${Server_Name_resource.name}/AllowAllWindowsAzureIps' + properties: { + endIpAddress: '0.0.0.0' + startIpAddress: '0.0.0.0' + } +} + +// Allow Client IP to access this server +resource Server_Name_AllowClientIP 'Microsoft.Sql/servers/firewallRules@2021-08-01-preview' = { + name: '${Server_Name_resource.name}/AllowClientIP' + properties: { + endIpAddress: clientIP + startIpAddress: clientIP + } +} + +// Make the user an Azure AD administrator for the server, so that the user can connect with universal authentication +resource Server_Name_activeDirectory 'Microsoft.Sql/servers/administrators@2021-08-01-preview' = { + name: '${Server_Name_resource.name}/activeDirectory' + properties: { + administratorType: 'ActiveDirectory' + login: userName + //sid: reference(resourceId('Microsoft.Sql/servers', '${projectName}server'), '2019-06-01-preview', 'Full').identity.principalId + sid: userObjectId + //tenantId: AAD_TenantId //optional + } +} + +/////////////////////////////////// +// Create the ContosoHR database// +////////////////////////////////// + +resource Database_Resource 'Microsoft.Sql/servers/databases@2021-08-01-preview' = { + name: 'ContosoHR' + parent: Server_Name_resource + location: location +} + +//////////////////////////////////////////// +// Enable automated ledger digest storage// +////////////////////////////////////////// + +//Create a storage account to store ledger digests +var StorageAccount_var = '${projectName}stg' +resource StorageAccount_Resource 'Microsoft.Storage/storageAccounts@2021-08-01' = { + name: StorageAccount_var + location: location + kind: 'StorageV2' + sku: { + name: 'Standard_RAGRS' + } + dependsOn: [ + Database_Resource + ] +} + +//Grant the server access to the storage account +var roleDefinitionId = 'ba92f5b4-2d11-453d-a403-e96b0029c9fe' // this is Storage Blob Data Contributor's GUID from https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#storage-blob-data-contributor +resource roleAssignment 'Microsoft.Authorization/roleAssignments@2021-04-01-preview' = { + name: guid(resourceGroup().id, resourceGroup().name, StorageAccount_var) + scope: StorageAccount_Resource + properties: { + principalId: Server_Name_resource.identity.principalId + roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionId) + } +} + +//Enable ledger digest uploads +resource LedgerDigestUploads_Resource 'Microsoft.Sql/servers/databases/ledgerDigestUploads@2021-08-01-preview' = { + name: 'current' + parent: Database_Resource + properties: { + digestStorageEndpoint: '${StorageAccount_Resource.properties.primaryEndpoints.blob}' + } +} + + +/////////////////////////////////// +// Configure the web application // +/////////////////////////////////// + +// Create an App Service plan +resource WebAppServicePlan_Resource 'Microsoft.Web/serverfarms@2021-02-01' = { + name: '${projectName}plan' + location: location + properties: {} + sku: { + name: 'B1' + } +} + +// Create the App Service +resource WebApp_Resource 'Microsoft.Web/sites@2021-02-01' = { + name: '${projectName}app' + location: location + identity: { + type: 'SystemAssigned' + } + properties: { + serverFarmId: WebAppServicePlan_Resource.id + } + + //Set the database connection string for the application + + resource WebAppConnectionString_Resource 'config' = { + name: 'connectionstrings' + properties: { + ContosoHRDatabase: { + value: 'Server=tcp:${Server_Name_resource.properties.fullyQualifiedDomainName};Database=ContosoHR; Authentication=Active Directory Managed Identity' + type: 'SQLAzure' + } + } + } + //Define AppSetting to fetch the correct project from the GitHub Repository + resource AppSetting 'config' = { + name: 'appsettings' + properties: { + PROJECT: 'samples/features/security/sql-ledger/source/ContosoHR/ContosoHR.csproj' + } + } +} + + // Deploy the application +resource sourceControl 'Microsoft.Web/sites/sourcecontrols@2021-02-01' = { + name: '${projectName}app/web' + properties: { + repoUrl: 'https://github.com/Pietervanhove/sql-server-samples.git' + branch: 'master' + isManualIntegration: true + } + dependsOn: [ + Server_Name_resource + ] +} + +output Servername string = Server_Name_resource.properties.fullyQualifiedDomainName +output DatabaseName string = 'ContosoHR' +output appname string = '${projectName}app' diff --git a/samples/features/security/sql-ledger/azure-sql-database/setup/setup.ps1 b/samples/features/security/sql-ledger/azure-sql-database/setup/setup.ps1 new file mode 100644 index 00000000..3f3ee8d0 --- /dev/null +++ b/samples/features/security/sql-ledger/azure-sql-database/setup/setup.ps1 @@ -0,0 +1,118 @@ +Import-Module "Az" -MinimumVersion "5.6" +Import-Module "SqlServer" -MinimumVersion "21.1.18235" + +###################################################################### +# Prompt the user to enter the values of deployment parameters +###################################################################### + +$projectName = Read-Host -Prompt "Enter a project name that is used to generate resource names" +$subscriptionId = Read-Host -Prompt "Enter your subscription id" +$location = Read-Host -Prompt "Enter a region where you want to deploy the demo environment" +$sqlAdminUserName = Read-Host -Prompt "Enter the username of the Azure SQL database server administrator for SQL authentication" +$sqlAdminPasswordSecureString = Read-Host -Prompt "Enter the password of the Azure SQL database server administrator for SQL authentication" -AsSecureString + +$sqlAdminPassword = (New-Object PSCredential "user",$sqlAdminPasswordSecureString).GetNetworkCredential().Password +$clientIP = (Invoke-WebRequest ifconfig.me/ip).Content.Trim() +$bicepFile = "azuredeploy.bicep" +$projectName = $projectName.ToLower() + + +###################################################################### +# Sign in to Azure +###################################################################### + +Connect-AzAccount +$context = Set-AzContext -Subscription $subscriptionId +$userName = $context.Account.Id +$userObjectId = $(Get-AzADUser -UserPrincipalName $userName).Id + +###################################################################### +# Create a resource group +###################################################################### +$resourceGroupName = "${projectName}" +New-AzResourceGroup -Name $resourceGroupName -Location $location + +###################################################################### +# Deploy the resources for the demo environment +###################################################################### + +$deployment=New-AzResourceGroupDeployment ` + -ResourceGroupName $resourceGroupName ` + -TemplateFile $bicepFile ` + -projectName $projectName ` + -userObjectId $userObjectId ` + -userName $userName ` + -sqlAdminUserName $sqlAdminUserName ` + -sqlAdminPassword $sqlAdminPassword ` + -clientIP $clientIP + +$fullServerName = $deployment.Outputs.servername.Value +$databaseName = $deployment.Outputs.databaseName.Value +$appName = $deployment.Outputs.appname.Value + +###################################################################### +# Create the database schema and populate it with data +###################################################################### + +# Create the databse schema +$queryFile = "CreateDatabaseSchema.sql" +$query = Get-Content -path $queryFile -Raw +$accessToken = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token +Invoke-Sqlcmd -ServerInstance "tcp:$fullServerName" -Database $databaseName -AccessToken $accessToken -QueryTimeout 30 -Query $query + +# Populate the database +$queryFile = "PopulateDatabase.sql" +$query = Get-Content -path $queryFile -Raw +$accessToken = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token +Invoke-Sqlcmd -ServerInstance "tcp:$fullServerName" -Database $databaseName -AccessToken $accessToken -QueryTimeout 30 -Query $query + +###################################################################### +# Grant the web application access to the database +###################################################################### + +# Create a shadow principal, representing the application, in the database +$query = "CREATE USER [$appName] FROM EXTERNAL PROVIDER;" +$accessToken = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token +Invoke-Sqlcmd -ServerInstance "tcp:$fullServerName" -Database $databaseName -AccessToken $accessToken -QueryTimeout 30 -Query $query + +# Grant the application access to the database. +$query = "EXEC sp_addrolemember 'db_datareader', '$appName';" +$accessToken = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token +Invoke-Sqlcmd -ServerInstance "tcp:$fullServerName" -Database $databaseName -AccessToken $accessToken -QueryTimeout 30 -Query $query + +# Grant the application access to the database. +$query = "EXEC sp_addrolemember 'db_datawriter', '$appName';" +$accessToken = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token +Invoke-Sqlcmd -ServerInstance "tcp:$fullServerName" -Database $databaseName -AccessToken $accessToken -QueryTimeout 30 -Query $query + +# Grant the application access to ledger content. +$query = "GRANT VIEW LEDGER CONTENT TO [$appName];" +$accessToken = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token +Invoke-Sqlcmd -ServerInstance "tcp:$fullServerName" -Database $databaseName -AccessToken $accessToken -QueryTimeout 30 -Query $query + +# Grant the application access to stored procedures. +$query = "GRANT EXECUTE ON [dbo].[VerifyLedger] TO [$appName];" +$accessToken = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token +Invoke-Sqlcmd -ServerInstance "tcp:$fullServerName" -Database $databaseName -AccessToken $accessToken -QueryTimeout 30 -Query $query + +$query = "GRANT EXECUTE ON [dbo].[GetEmployeeLedgerEntries] TO [$appName];" +$accessToken = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token +Invoke-Sqlcmd -ServerInstance "tcp:$fullServerName" -Database $databaseName -AccessToken $accessToken -QueryTimeout 30 -Query $query + +$query = "GRANT EXECUTE ON [dbo].[GetLedgerVerifications] TO [$appName];" +$accessToken = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token +Invoke-Sqlcmd -ServerInstance "tcp:$fullServerName" -Database $databaseName -AccessToken $accessToken -QueryTimeout 30 -Query $query + +$query = "GRANT EXECUTE ON [dbo].[GetAuditEvents] TO [$appName];" +$accessToken = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token +Invoke-Sqlcmd -ServerInstance "tcp:$fullServerName" -Database $databaseName -AccessToken $accessToken -QueryTimeout 30 -Query $query + +###################################################################### +# Print parameters for the demo +###################################################################### + +$app = Get-AzWebApp -Name $appName -ResourceGroupName $resourceGroupName +Write-Host -ForegroundColor "green" "Resource group name: $resourceGroupName" +Write-Host -ForegroundColor "green" "Database server name: $fullServerName" +Write-Host -ForegroundColor "green" "Database name: $databaseName" +Write-Host -ForegroundColor "green" "Application URL: https://$($app.HostNames[0].ToString())" \ No newline at end of file diff --git a/samples/features/security/sql-ledger/azure-sql-database/tsql-scripts/GetEmployeeLedgerEntries.sql b/samples/features/security/sql-ledger/azure-sql-database/tsql-scripts/GetEmployeeLedgerEntries.sql new file mode 100644 index 00000000..930e57a6 --- /dev/null +++ b/samples/features/security/sql-ledger/azure-sql-database/tsql-scripts/GetEmployeeLedgerEntries.sql @@ -0,0 +1,13 @@ +SELECT +t.[commit_time] AS [CommitTime] +, t.[principal_name] AS [UserName] +, l.EmployeeId +, l.[SSN] +, l.[FirstName] +, l.[LastName] +, l.[Salary] +, l.[ledger_operation_type_desc] AS Operation +FROM [dbo].[Employees_Ledger] l +JOIN sys.database_ledger_transactions t +ON t.transaction_id = l.ledger_transaction_id +ORDER BY t.commit_time DESC \ No newline at end of file diff --git a/samples/features/security/sql-ledger/azure-sql-database/tsql-scripts/ListAllEmployees.sql b/samples/features/security/sql-ledger/azure-sql-database/tsql-scripts/ListAllEmployees.sql new file mode 100644 index 0000000000000000000000000000000000000000..f8661c671f6294ce4e6528af1a2e608afde3e738 GIT binary patch literal 242 zcmezWFPOoV!3T()8A2Eo7@~o!T!sRM9EN;`N`_P*^ki^hh-Khq-~!4bpbk)FFcA9T zkaJ_mWGG@NW+(xwNCcXgibI_bP?oT&V4$iTAT9#B3E>tuh9Cxi24AqNQy7wfE{I2kt=i0Ksx1W&i*H literal 0 HcmV?d00001 diff --git a/samples/features/security/sql-ledger/azure-sql-database/tsql-scripts/UpdateSalary.sql b/samples/features/security/sql-ledger/azure-sql-database/tsql-scripts/UpdateSalary.sql new file mode 100644 index 00000000..d748c260 --- /dev/null +++ b/samples/features/security/sql-ledger/azure-sql-database/tsql-scripts/UpdateSalary.sql @@ -0,0 +1,2 @@ +UPDATE [dbo].[Employees] SET [Salary] = [Salary] + 50000 +WHERE [FirstName] = N'Jay' AND [LastName] = N'Adams';