public static SetSnapshotIsolation ( string databaseName, bool value ) : |
||
databaseName | string | |
value | bool | |
리턴 |
public static SqlPreCommand?SnapshotIsolation() { if (!Connector.Current.AllowsSetSnapshotIsolation) { return(null); } var list = Schema.Current.DatabaseNames().Select(a => a?.ToString()).ToList(); if (list.Contains(null)) { list.Remove(null); list.Add(Connector.Current.DatabaseName()); } var cmd = list.NotNull() .Where(db => !SnapshotIsolationEnabled(db)) .Select(db => SqlPreCommand.Combine(Spacing.Simple, SqlBuilder.SetSingleUser(db), SqlBuilder.SetSnapshotIsolation(db, true), SqlBuilder.MakeSnapshotIsolationDefault(db, true), SqlBuilder.SetMultiUser(db)) ).Combine(Spacing.Double); return(cmd); }
public static SqlPreCommand SnapshotIsolation() { if (!Connector.Current.AllowsSetSnapshotIsolation) { return(null); } var list = Schema.Current.DatabaseNames().Select(a => a?.ToString()).ToList(); if (list.Contains(null)) { list.Remove(null); list.Add(Connector.Current.DatabaseName()); } var cmd = list.Select(a => SqlPreCommand.Combine(Spacing.Simple, //DisconnectUsers(a.name, "SPID" + i) : null, SqlBuilder.SetSingleUser(a), SqlBuilder.SetSnapshotIsolation(a, true), SqlBuilder.MakeSnapshotIsolationDefault(a, true), SqlBuilder.SetMultiUser(a)) ).Combine(Spacing.Double); return(cmd); }
public static SqlPreCommand SnapshotIsolation(Replacements replacements) { if (replacements.SchemaOnly) { return(null); } var list = Schema.Current.DatabaseNames().Select(a => a?.ToString()).ToList(); if (list.Contains(null)) { list.Remove(null); list.Add(Connector.Current.DatabaseName()); } var results = Database.View <SysDatabases>() .Where(d => list.Contains(d.name)) .Select(d => new { d.name, d.snapshot_isolation_state, d.is_read_committed_snapshot_on }).ToList(); var cmd = replacements.WithReplacedDatabaseName().Using(_ => results.Select((a, i) => SqlPreCommand.Combine(Spacing.Simple, !a.snapshot_isolation_state || !a.is_read_committed_snapshot_on ? DisconnectUsers(a.name, "SPID" + i) : null, !a.snapshot_isolation_state ? SqlBuilder.SetSnapshotIsolation(a.name, true) : null, !a.is_read_committed_snapshot_on ? SqlBuilder.MakeSnapshotIsolationDefault(a.name, true) : null)).Combine(Spacing.Double)); if (cmd == null) { return(null); } return(SqlPreCommand.Combine(Spacing.Double, new SqlPreCommandSimple("use master -- Start Snapshot"), cmd, new SqlPreCommandSimple("use {0} -- Stop Snapshot".FormatWith(Connector.Current.DatabaseName())))); }