internal static string DropDatabaseScript(string databaseName) { var builder = new SqlDdlBuilder(); builder.AppendSql("drop database "); builder.AppendIdentifier(databaseName); return(builder.unencodedStringBuilder.ToString()); }
private static string SetReadCommittedSnapshotScript(string databaseName) { var builder = new SqlDdlBuilder(); builder.AppendSql("alter database "); builder.AppendIdentifier(databaseName); builder.AppendSql(" set read_committed_snapshot on"); return(builder.unencodedStringBuilder.ToString()); }
internal static string CreateDatabaseExistsScript(string databaseName, bool useDeprecatedSystemTable) { var builder = new SqlDdlBuilder(); builder.AppendSql("SELECT Count(*) FROM "); AppendSysDatabases(builder, useDeprecatedSystemTable); builder.AppendSql(" WHERE [name]="); builder.AppendStringLiteral(databaseName); return(builder.unencodedStringBuilder.ToString()); }
internal static string CreateDatabaseExistsScript(string databaseName) { SqlDdlBuilder sqlDdlBuilder = new SqlDdlBuilder(); sqlDdlBuilder.AppendSql("IF db_id("); sqlDdlBuilder.AppendStringLiteral(databaseName); sqlDdlBuilder.AppendSql(") IS NOT NULL SELECT 1 ELSE SELECT Count(*) FROM sys.databases WHERE [name]="); sqlDdlBuilder.AppendStringLiteral(databaseName); return(sqlDdlBuilder.unencodedStringBuilder.ToString()); }
private static void AppendSysDatabases(SqlDdlBuilder builder, bool useDeprecatedSystemTable) { if (useDeprecatedSystemTable) { builder.AppendSql("sysdatabases"); } else { builder.AppendSql("sys.databases"); } }
internal static string SetDatabaseOptionsScript(SqlVersion sqlVersion, string databaseName) { if (sqlVersion < SqlVersion.Sql9) { return(string.Empty); } SqlDdlBuilder sqlDdlBuilder = new SqlDdlBuilder(); sqlDdlBuilder.AppendSql("if serverproperty('EngineEdition') <> 5 execute sp_executesql "); sqlDdlBuilder.AppendStringLiteral(SqlDdlBuilder.SetReadCommittedSnapshotScript(databaseName)); return(sqlDdlBuilder.unencodedStringBuilder.ToString()); }
private void AppendIdentifier(EntitySet table, Action <string> AppendIdentifierEscape) { string schemaName = SqlDdlBuilder.GetSchemaName(table); string tableName = SqlDdlBuilder.GetTableName(table); if (schemaName != null) { AppendIdentifierEscape(schemaName); this.AppendSql("."); } AppendIdentifierEscape(tableName); }
private void AppendCreateSchema(string schema) { this.AppendSql("if (schema_id("); this.AppendStringLiteral(schema); this.AppendSql(") is null) exec("); SqlDdlBuilder sqlDdlBuilder = new SqlDdlBuilder(); sqlDdlBuilder.AppendSql("create schema "); sqlDdlBuilder.AppendIdentifier(schema); this.AppendStringLiteral(sqlDdlBuilder.unencodedStringBuilder.ToString()); this.AppendSql(");"); this.AppendNewLine(); }
internal static string SetDatabaseOptionsScript(SqlVersion sqlVersion, string databaseName) { if (sqlVersion < SqlVersion.Sql9) { return(String.Empty); } var builder = new SqlDdlBuilder(); // Set READ_COMMITTED_SNAPSHOT ON, if SQL Server 2005 and up, and not SQLAzure. builder.AppendSql("if serverproperty('EngineEdition') <> 5 execute sp_executesql "); builder.AppendStringLiteral(SetReadCommittedSnapshotScript(databaseName)); return(builder.unencodedStringBuilder.ToString()); }
private void AppendCreateSchema(string schema) { AppendSql("if (schema_id("); AppendStringLiteral(schema); AppendSql(") is null) exec("); // need to create a sub-command and escape it as a string literal as well... var schemaBuilder = new SqlDdlBuilder(); schemaBuilder.AppendSql("create schema "); schemaBuilder.AppendIdentifier(schema); AppendStringLiteral(schemaBuilder.unencodedStringBuilder.ToString()); AppendSql(");"); AppendNewLine(); }
internal static string CreateDatabaseScript(string databaseName, string dataFileName, string logFileName) { var builder = new SqlDdlBuilder(); builder.AppendSql("create database "); builder.AppendIdentifier(databaseName); if (null != dataFileName) { Debug.Assert(logFileName != null, "must specify log file with data file"); builder.AppendSql(" on primary "); builder.AppendFileName(dataFileName); builder.AppendSql(" log on "); builder.AppendFileName(logFileName); } return(builder.unencodedStringBuilder.ToString()); }
internal static string CreateDatabaseScript( string databaseName, string dataFileName, string logFileName) { SqlDdlBuilder sqlDdlBuilder = new SqlDdlBuilder(); sqlDdlBuilder.AppendSql("create database "); sqlDdlBuilder.AppendIdentifier(databaseName); if (dataFileName != null) { sqlDdlBuilder.AppendSql(" on primary "); sqlDdlBuilder.AppendFileName(dataFileName); sqlDdlBuilder.AppendSql(" log on "); sqlDdlBuilder.AppendFileName(logFileName); } return(sqlDdlBuilder.unencodedStringBuilder.ToString()); }
internal static string CreateDatabaseExistsScript(string databaseName) { // This handles non-SQL Azure servers by using db_id() which will return a non null value for // a database on the server even if the login doesn't have "view any database" permission. // On SQL Azure db_id() only works for the current database, which means it will never work here // because the current database is master. In this case we fall back to the query from sys.databases. // This doesn't work for non-SQL Azure if the login does not have 'view any database' // permission, but that case was covered by db_id(). On SQL Azure there are no server class // securables, which means it is not possible to deny the login 'view any database' so in theory // if the user can connect to master then the sys.databases query will work. var builder = new SqlDdlBuilder(); builder.AppendSql("IF db_id("); builder.AppendStringLiteral(databaseName); builder.AppendSql(") IS NOT NULL SELECT 1 ELSE SELECT Count(*) FROM sys.databases WHERE [name]="); builder.AppendStringLiteral(databaseName); return(builder.unencodedStringBuilder.ToString()); }
internal static string CreateGetDatabaseNamesBasedOnFileNameScript(string databaseFileName, bool useDeprecatedSystemTable) { var builder = new SqlDdlBuilder(); builder.AppendSql("SELECT [d].[name] FROM "); AppendSysDatabases(builder, useDeprecatedSystemTable); builder.AppendSql(" AS [d] "); if (!useDeprecatedSystemTable) { builder.AppendSql("INNER JOIN sys.master_files AS [f] ON [f].[database_id] = [d].[database_id]"); } builder.AppendSql(" WHERE ["); if (useDeprecatedSystemTable) { builder.AppendSql("filename"); } else { builder.AppendSql("f].[physical_name"); } builder.AppendSql("]="); builder.AppendStringLiteral(databaseFileName); return(builder.unencodedStringBuilder.ToString()); }
internal static string CreateObjectsScript( StoreItemCollection itemCollection, bool createSchemas) { SqlDdlBuilder sqlDdlBuilder = new SqlDdlBuilder(); foreach (EntityContainer entityContainer in itemCollection.GetItems <EntityContainer>()) { IOrderedEnumerable <EntitySet> source = entityContainer.BaseEntitySets.OfType <EntitySet>().OrderBy <EntitySet, string>((Func <EntitySet, string>)(s => s.Name)); if (createSchemas) { foreach (string schema in (IEnumerable <string>) new HashSet <string>(source.Select <EntitySet, string>((Func <EntitySet, string>)(s => SqlDdlBuilder.GetSchemaName(s)))).OrderBy <string, string>((Func <string, string>)(s => s))) { if (schema != "dbo") { sqlDdlBuilder.AppendCreateSchema(schema); } } } foreach (EntitySet entitySet in (IEnumerable <EntitySet>)entityContainer.BaseEntitySets.OfType <EntitySet>().OrderBy <EntitySet, string>((Func <EntitySet, string>)(s => s.Name))) { sqlDdlBuilder.AppendCreateTable(entitySet); } foreach (AssociationSet associationSet in (IEnumerable <AssociationSet>)entityContainer.BaseEntitySets.OfType <AssociationSet>().OrderBy <AssociationSet, string>((Func <AssociationSet, string>)(s => s.Name))) { sqlDdlBuilder.AppendCreateForeignKeys(associationSet); } } return(sqlDdlBuilder.GetCommandText()); }