如何以编程方式创建数据库?我需要做的最少信息是什么?
请否“SQL Server管理对象API”建议。
答案 0 :(得分:25)
您可以使用SQL Server Management Object API(请参阅任务“creating, altering and removing databases”):
var srv = new Server();
var db = new Database(srv, "mydb");
db.Create();
有关如何入门的信息是here。在SQL Server安装期间,您需要安装客户端SDK,SMO程序集位于C:\ Program Files \ Microsoft SQL Server \ 100 \ SDK \ Assemblies
或者如果您不希望依赖于这些程序集,您也可以使用ADO.Net(例如see this question)简单地运行DDL语句:
using (var connection = new SqlConnection(myConnectionString))
{
connection.Open();
var command = connection.CreateCommand();
command.CommandText = "CREATE DATABASE mydb";
command.ExecuteNonQuery();
}
显然你需要一个正确的连接字符串:已知的sql server实例和具有CREATE DATABASE权限的用户。
答案 1 :(得分:5)
来自creators:
// your connection string
string connectionString = "Server=(local)\\netsdk;uid=sa;pwd=;database=master";
// your query:
var query = GetDbCreationQuery();
var conn = new SqlConnection(connectionString);
var command = new SqlCommand(query, conn);
try
{
conn.Open();
command.ExecuteNonQuery();
MessageBox.Show("Database is created successfully", "MyProgram",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
if ((conn.State == ConnectionState.Open))
{
conn.Close();
}
}
要使用默认设置在默认位置创建,只需:
static string GetDbCreationQuery()
{
// your db name
string dbName = "MyDatabase";
// db creation query
string query = "CREATE DATABASE " + dbName + ";";
return query;
}
或者,要在特定位置创建
static string GetDbCreationQuery()
{
// your db name
string dbName = "MyDatabase";
// path to your db files:
// ensure that the directory exists and you have read write permission.
string[] files = { Path.Combine(Application.StartupPath, dbName + ".mdf"),
Path.Combine(Application.StartupPath, dbName + ".ldf") };
// db creation query:
// note that the data file and log file have different logical names
string query = "CREATE DATABASE " + dbName +
" ON PRIMARY" +
" (NAME = " + dbName + "_data," +
" FILENAME = '" + files[0] + "'," +
" SIZE = 3MB," +
" MAXSIZE = 10MB," +
" FILEGROWTH = 10%)" +
" LOG ON" +
" (NAME = " + dbName + "_log," +
" FILENAME = '" + files[1] + "'," +
" SIZE = 1MB," +
" MAXSIZE = 5MB," +
" FILEGROWTH = 10%)" +
";";
return query;
}
即使执行失败,也请再试一次。可能已创建了db文件。
答案 2 :(得分:4)
Create database 'Databasename'
答案 3 :(得分:0)
您需要打开与服务器的连接,即您需要服务器和实例名称。
您还需要适当的访问权限才能创建数据库,因此根据服务器上的身份验证设置,您可能需要一些用户名和密码。
从服务器名称和身份验证信息中,您可以构建连接字符串并打开连接。
然后您可以使用CREATE DATABASE
SQL命令(请参阅here on MSDN)。此命令唯一需要的参数是数据库名称。
答案 4 :(得分:0)
您需要连接信息:服务器,可能是实例,在该服务器/实例上具有create database权限的用户以及相应的密码。然后,您可以使用SMO创建数据库。这是一个小的PowerShell示例,您可以非常轻松地“翻译”到C#,例如:
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | Out-Null
$s = New-Object Microsoft.SqlServer.Management.Smo.Server($ServerInstance)
# Instantiate the database object and add the filegroups
$db = New-Object Microsoft.SqlServer.Management.Smo.Database($s, $DatabaseName)
$primaryFG = New-Object Microsoft.SqlServer.Management.Smo.FileGroup($db, 'PRIMARY')
$db.FileGroups.Add($primaryFG)
# Create Data file
$syslogname = $DatabaseName + '_SysData'
$dbdsysfile = New-Object Microsoft.SqlServer.Management.Smo.DataFile($primaryFG, $syslogname)
$primaryFG.Files.Add($dbdsysfile)
$dbdsysfile.FileName = $s.MasterDBPath + '\' + $syslogname + '.mdf'
$dbdsysfile.Size = [double](5.0 * 1024.0)
$dbdsysfile.GrowthType = 'KB'
$dbdsysfile.Growth = 10000.0
$dbdsysfile.IsPrimaryFile = 'True'
# Create Log file
$loglogname = $DatabaseName + '_Log'
$dblfile = New-Object Microsoft.SqlServer.Management.Smo.LogFile($db, $loglogname)
$db.LogFiles.Add($dblfile)
$dblfile.FileName = $s.MasterDBLogPath + '\' + $loglogname + '.ldf'
$dblfile.Size = [double](10.0 * 1024.0)
$dblfile.GrowthType = 'KB'
$dblfile.Growth = 10000.0
# Create database with READ_COMMITTED_SNAPSHOT isolation level.
# Other options can be set on $db object before calling Create.
$db.IsReadCommittedSnapshotOn = $true
$db.RecoveryModel = [Microsoft.SqlServer.Management.Smo.RecoveryModel]::Simple
$db.Create()
答案 5 :(得分:0)
假设您有权启动CREATE DATABASE语句,您可以像处理任何其他查询一样。
我应该强调,能够这样做需要在服务器上具有相当高的权限,这将仅限于QA和生产环境中的DBA。
出于这个原因,我会确保您的连接使用Windows Integrated Security。这样,当适当的DBA运行您的应用程序时,应用程序将按要求运行。
创建数据库后,您还需要关闭T-SQL以创建登录和创建用户。我明白需要CREATE TABLE / VIEW语句。