param([Parameter(Mandatory=$true)][string]$Server,[Parameter(Mandatory=$true)][string]$Database) $ErrorActionPreference='Stop' [Console]::OutputEncoding=[Text.UTF8Encoding]::new($false) $builder=[Data.SqlClient.SqlConnectionStringBuilder]::new() $builder['Data Source']=$Server;$builder['Initial Catalog']=$Database;$builder['Integrated Security']=$true $builder['Connect Timeout']=8;$builder['Application Name']='MixedPilotFixtureReadOnly' $cn=[Data.SqlClient.SqlConnection]::new($builder.ConnectionString);$cn.Open() function Query([string]$sql){ $c=$cn.CreateCommand();$c.CommandTimeout=10;$c.CommandText='SET NOCOUNT ON;SET LOCK_TIMEOUT 2000;'+$sql $t=[Data.DataTable]::new();try{$r=$c.ExecuteReader();try{$t.Load($r)}finally{$r.Dispose()}}finally{$c.Dispose()} foreach($row in $t.Rows){$o=[ordered]@{};foreach($col in $t.Columns){$v=$row[$col.ColumnName];$o[$col.ColumnName]=if($v -is [DBNull]){$null}else{$v}};[pscustomobject]$o} } try { # Definitions and column metadata only: no production inventory/order/task rows are exported. $fixture=[ordered]@{ columns=@(Query "SELECT o.name table_name,c.name column_name,TYPE_NAME(c.user_type_id) type_name,c.max_length,c.precision,c.scale,c.is_nullable,c.is_identity FROM sys.objects o JOIN sys.columns c ON c.object_id=o.object_id WHERE o.schema_id=SCHEMA_ID('dbo') AND o.name IN('bas_cargo_space','bas_stock','mydo_job','mydo_job_detail','mydo_job_finish','bas_led','move_msg','out_stockout','out_stockout_detail') ORDER BY o.name,c.column_id") wms_objects=@(Query "SELECT o.name,m.definition FROM sys.objects o JOIN sys.sql_modules m ON m.object_id=o.object_id WHERE o.schema_id=SCHEMA_ID('dbo') AND o.name IN('cargo_space_group_count','proc_allot_space','proc_yk_job_add','proc_yk_complete','proc_out_auto_allocation','proc_out_hand_allocation')") } $fixture|ConvertTo-Json -Depth 6 -Compress }finally{$cn.Dispose()}