Database Class
Assembly: Microsoft.SqlServer.Smo (in microsoft.sqlserver.smo.dll)
Updated text: 17 July 2006
Updated text: 14 April 2006
This namespace, class, or member is supported only in version 2.0 of the Microsoft .NET Framework.
The Database class represents databases, either system or user-defined, on the instance of SQL Server. The Server class is the parent of the Database class.
By using the Database class, you can do the following:
-
Create a new database or drop and existing database.
-
Register the database in the Active Directory directory service.
-
Reference database objects in collections, such as tables, users, and triggers.
-
Set up database mirroring.
-
Create a master database key.
-
Set up a full-text search catalog.
-
Check data, allocations, catalogs, and tables.
-
Issue a checkpoint.
-
Grant, revoke, and deny permissions to users on the database.
-
Run Transact-SQL statements.
-
Enumerate database information, such as locks or object permissions.
-
Remove the backup history.
-
Monitor the number of transactions.
-
Set the database offline or online.
-
Change the owner of the database.
-
Update statistics.
-
Shrink the database.
-
Truncate the log.
-
Script the database.
To get Database object properties, users can be a member of the public fixed server role.
To set Database object properties and run the Alter method, users must have ALTER permission on the database, or be a member of the db_owner fixed database role.
To create a database, users must have CREATE DATABASE, CREATE ANY DATABASE, or ALTER ANY DATABASE permission on the parent server.
To drop a database, users must have CONTROL permission on the database, or be a member of the db_owner fixed database role.
To grant, revoke, or deny other users permission on the database, users must have CONTROL permission on the database or be a member of the db_owner fixed database role.
'Connect to the local, default instance of SQL Server. Dim srv As Server srv = New Server 'Define a Database object variable by supplying the server and the database name arguments in the constructor. Dim db As Database db = New Database(srv, "Test_SMO_Database") 'Create the database on the instance of SQL Server. db.Create() 'Reference the database and display the date when it was created. db = srv.Databases("Test_SMO_Database") Console.WriteLine(db.CreateDate) 'Remove the database. db.Drop()
Development Platforms
For a list of the supported platforms, see Hardware and Software Requirements for Installing SQL Server 2005.Target Platforms
|
Release |
History |
|
17 July 2006 |
Changed content:
|
|
Release |
History |
|
14 April 2006 |
Changed content:
|
#-------------------------------------------------------------------------
# ScriptName : create-SQLDatabase.ps1
#
# Author : Richard Vantrease
#
# Purpose : Create a new SQL Server database using a pre-defined template
#
# Dependencies : Microsoft.SQLServer.SMO
#-------------------------------------------------------------------------
# Thanks to Allen White for the write-up I used in creating this script
# http://sqlblog.com/blogs/allen_white/archive/2008/04/28/create-database-from-powershell.aspx
param
(
[string]$ServerName,
[string]$DBName
)
#Create a size template for the database files
#SystemDataFile
[double]$_SysFileSizeMB = [double](5.0 * 1024.0)
[string]$_SysFileGrowthType = 'None'
#DataFile
[double]$_DataFileSizeMB = [double](25.0 * 1024.0)
[string]$_DataFileGrowthType = 'Percent'
[double]$_DataFileGrowth = 10.0
#LogFile
[double]$_LogFileSizeMB = [double](10.0 * 1024.0)
[string]$_LogFileGrowthType = 'Percent'
[double]$_LogFileGrowth = 10.0
#Load the SMO assembly
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO')
#Connect to a SQL Server
$SQLServer = new-object ('Microsoft.SQLServer.Management.SMO.Server') $ServerName
#Create a new database object to build out and then add to the SQL Server
$Database = new-object ('Microsoft.SQLServer.Management.SMO.Database') ($SQLServer, $DBName)
#Create filegroups, creating two to seperate the sysfiles from the datafiles
$PrimaryFG = new-object ('Microsoft.SQLServer.Management.SMO.FileGroup') ($Database, 'PRIMARY')
$DataFG = New-Object ('Microsoft.SQLServer.Management.SMO.FileGroup') ($Database, 'DATAFG')
#Add filegroups to the database object
$Database.FileGroups.Add($PrimaryFG)
$Database.FileGroups.Add($DataFG)
#Create file names
$SysFileName = "$($DBName)_SysData"
$DataFileName = "$($DBName)_Data"
$LogFileName = "$($DBName)_Log"
#Create file objects
$SysFile = new-object ('Microsoft.SQLServer.Management.SMO.DataFile') ($PrimaryFG, $SysFileName)
$DataFile = new-object ('Microsoft.SQLServer.Management.SMO.DataFile') ($DataFG, $DataFileName)
$LogFile = new-object ('Microsoft.SQLServer.Management.SMO.LogFile') ($Database, $LogFileName)
#Set file object properties for sysfile
$SysFile.FileName = "$($SQLServer.properties['DefaultFile'].Value)\$SysFileName.mdf"
$SysFile.Size = $_SysFileSizeMB
$SysFile.GrowthType = $_SysFileGrowthType
$SysFile.IsPrimaryFile = 'True'
#Set file object properties for datafile
$DataFile.FileName = "$($SQLServer.properties['DefaultFile'].Value)\$DataFileName.ndf"
$DataFile.Size = $_DataFileSizeMB
$DataFile.GrowthType = $_DataFileGrowthType
$DataFile.Growth = $_DataFileGrowth
#Set file object properties for logfile
$LogFile.FileName = "$($SQLServer.properties['DefaultFile'].Value)\$LogFileName.ldf"
$LogFile.Size = $_LogFileSizeMB
$LogFile.GrowthType = $_LogFileGrowthType
$LogFile.Growth = $_LogFileGrowth
#Add files to filegroups or database
$PrimaryFG.Files.Add($SysFile)
$DataFG.Files.Add($DataFile)
$Database.LogFiles.Add($LogFile)
#Create database on SQL Server
$Database.Create()
#Alter database to use datafile filegroup as default
$Database.FileGroups['DATAFG'].IsDefault = $True
$Database.FileGroups['DATAFG'].Alter()
$Database.Alter()
- 6/25/2009
- Richard Vantrease
- 7/8/2009
- Thomas Lee
# ScriptName : get-SQLServerDatabases.ps1
#
# Author : Richard Vantrease
#
# Purpose : Returns a collection of database objects for a
# SQL Server object. Will display interesting
# properties if the -Display switch is used.
#
# Dependencies : Microsoft.SQLServer.SMO
#-------------------------------------------------------------------------
param(
[string]$ServerName,
[switch]$Display
)
#-------------------------Environment Preferences-------------------------
Set-PSDebug -strict
#-------------------------------------------------------------------------
# Load Microsoft.SQLServer.SMO Library
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | out-null
$SQLServer = new-object "Microsoft.SQLServer.Management.SMO.Server" $ServerName
if($Display) { $SQLServer.Databases | ft Name, Size -AutoSize}
else { $SQLServer.Databases }
- 6/25/2009
- Richard Vantrease
- 7/8/2009
- Thomas Lee