Documentation
¶
Overview ¶
Package gosmo provides a Go library that mimics Microsoft SQL Server Management Objects (SMO). It allows you to connect to SQL Server instances and programmatically manage databases, tables, schemas, users, logins, indexes, stored procedures, and more.
Index ¶
- Constants
- func BuildBackupStatement(opts BackupOptions) (string, error)
- func BuildRestoreStatement(opts RestoreOptions) (string, error)
- func ColumnPermissionNames() []string
- func ColumnTypeString(col *Column) string
- func DatabasePermissionNames() []string
- func IsRetryable(err error) bool
- func ObjectPermissionNames() []string
- func ParseServerAddress(server string) (host, instance string, port int)
- func QuoteLiteral(s string) string
- func QuoteName(name string) string
- func SchemaPermissionNames() []string
- func Scripting(ctx context.Context) bool
- func ServerPermissionNames() []string
- func SliceRows(rows [][]any) iter.Seq2[[]any, error]
- type ActiveSession
- type AgentStatus
- type Alert
- func (a *Alert) Disable() error
- func (a *Alert) DisableContext(ctx context.Context) error
- func (a *Alert) Drop() error
- func (a *Alert) DropContext(ctx context.Context) error
- func (a *Alert) Enable() error
- func (a *Alert) EnableContext(ctx context.Context) error
- func (a *Alert) IsEventAlert() bool
- func (a *Alert) NotificationSeq(ctx context.Context) iter.Seq2[*AlertNotification, error]
- func (a *Alert) Notifications() ([]*AlertNotification, error)
- func (a *Alert) NotificationsContext(ctx context.Context) ([]*AlertNotification, error)
- func (a *Alert) Notify(operatorName string, method NotificationMethod) error
- func (a *Alert) NotifyContext(ctx context.Context, operatorName string, method NotificationMethod) error
- func (a *Alert) RemoveNotify(operatorName string) error
- func (a *Alert) RemoveNotifyContext(ctx context.Context, operatorName string) error
- func (a *Alert) Rename(newName string) error
- func (a *Alert) RenameContext(ctx context.Context, newName string) error
- func (a *Alert) SetCategory(category string) error
- func (a *Alert) SetCategoryContext(ctx context.Context, category string) error
- func (a *Alert) SetDatabase(dbName string) error
- func (a *Alert) SetDatabaseContext(ctx context.Context, dbName string) error
- func (a *Alert) SetDelay(d time.Duration) error
- func (a *Alert) SetDelayContext(ctx context.Context, d time.Duration) error
- func (a *Alert) SetJobResponse(jobName string) error
- func (a *Alert) SetJobResponseContext(ctx context.Context, jobName string) error
- func (a *Alert) SetNotificationMessage(msg string) error
- func (a *Alert) SetNotificationMessageContext(ctx context.Context, msg string) error
- func (a *Alert) SetTrigger(errorNumber, severity int) error
- func (a *Alert) SetTriggerContext(ctx context.Context, errorNumber, severity int) error
- type AlertNotification
- type AlertNotificationRef
- type AuthMethod
- type BackupAction
- type BackupFile
- type BackupHeader
- type BackupInfo
- type BackupOptions
- type BulkCopy
- type BulkOptions
- type Catalog
- type CatalogColumn
- type CatalogObject
- type CatalogObjectType
- type Category
- type CategoryClass
- type ChangeTrackingInfo
- type CheckConstraint
- type Column
- type ColumnDefault
- type ColumnDefinition
- type ColumnEncryptionKey
- type ColumnMasterKey
- type ColumnPermissionEntry
- type CompatibilityLevel
- type ConfigurationOption
- type ConnectionOptions
- type CreateAlertRequest
- type CreateDatabaseOptions
- type CreateIndexRequest
- type CreateJobRequest
- type CreateLoginOptions
- type CreateOperatorRequest
- type CreatePartitionFunctionRequest
- type CreateScheduleRequest
- type CreateSequenceRequest
- type CreateTableRequest
- type Credential
- type DataType
- type Database
- func (d *Database) ActualPlan(sql string) (*ExecutionPlan, error)
- func (d *Database) ActualPlanContext(ctx context.Context, sqlText string) (*ExecutionPlan, error)
- func (d *Database) AddExtendedProperty(name, value string, level ExtendedPropertyLevel) error
- func (d *Database) AddExtendedPropertyContext(ctx context.Context, name, value string, level ExtendedPropertyLevel) error
- func (d *Database) AddFile(spec DatabaseFileSpec) error
- func (d *Database) AddFileContext(ctx context.Context, spec DatabaseFileSpec) error
- func (d *Database) AddFileGroup(name string) error
- func (d *Database) AddFileGroupContext(ctx context.Context, name string) error
- func (d *Database) AddRoleMember(roleName, memberName string) error
- func (d *Database) AddRoleMemberContext(ctx context.Context, roleName, memberName string) error
- func (d *Database) AlterFile(name string, m FileModify) error
- func (d *Database) AlterFileContext(ctx context.Context, name string, m FileModify) error
- func (d *Database) BulkInsert(bc BulkCopy, rows iter.Seq2[[]any, error]) (int64, error)
- func (d *Database) BulkInsertContext(ctx context.Context, bc BulkCopy, rows iter.Seq2[[]any, error]) (int64, error)
- func (d *Database) Catalog() (*Catalog, error)
- func (d *Database) CatalogContext(ctx context.Context) (*Catalog, error)
- func (d *Database) ChangeTracking() (*ChangeTrackingInfo, error)
- func (d *Database) ChangeTrackingContext(ctx context.Context) (*ChangeTrackingInfo, error)
- func (d *Database) ClearQueryStore() error
- func (d *Database) ClearQueryStoreContext(ctx context.Context) error
- func (d *Database) Collation() string
- func (d *Database) ColumnEncryptionKeySeq(ctx context.Context) iter.Seq2[*ColumnEncryptionKey, error]
- func (d *Database) ColumnEncryptionKeys() ([]*ColumnEncryptionKey, error)
- func (d *Database) ColumnEncryptionKeysContext(ctx context.Context) ([]*ColumnEncryptionKey, error)
- func (d *Database) ColumnMasterKeySeq(ctx context.Context) iter.Seq2[*ColumnMasterKey, error]
- func (d *Database) ColumnMasterKeys() ([]*ColumnMasterKey, error)
- func (d *Database) ColumnMasterKeysContext(ctx context.Context) ([]*ColumnMasterKey, error)
- func (d *Database) ColumnPermissionSeq(ctx context.Context, schema, name string) iter.Seq2[*ColumnPermissionEntry, error]
- func (d *Database) ColumnPermissions(schema, name string) ([]*ColumnPermissionEntry, error)
- func (d *Database) ColumnPermissionsContext(ctx context.Context, schema, name string) ([]*ColumnPermissionEntry, error)
- func (d *Database) ColumnPermissionsForPrincipal(principal string) ([]*ColumnPermissionEntry, error)
- func (d *Database) ColumnPermissionsForPrincipalContext(ctx context.Context, principal string) ([]*ColumnPermissionEntry, error)
- func (d *Database) ColumnPermissionsForPrincipalSeq(ctx context.Context, principal string) iter.Seq2[*ColumnPermissionEntry, error]
- func (d *Database) CompatibilityLevel() CompatibilityLevel
- func (d *Database) CreateColumnMasterKey(name, keyStoreProvider, keyPath string, enclaveComputations bool) error
- func (d *Database) CreateColumnMasterKeyContext(ctx context.Context, name, keyStoreProvider, keyPath string, ...) error
- func (d *Database) CreateDate() time.Time
- func (d *Database) CreatePartitionFunction(req CreatePartitionFunctionRequest) error
- func (d *Database) CreatePartitionFunctionContext(ctx context.Context, req CreatePartitionFunctionRequest) error
- func (d *Database) CreatePartitionScheme(name, functionName string, fileGroups []string) error
- func (d *Database) CreatePartitionSchemeContext(ctx context.Context, name, functionName string, fileGroups []string) error
- func (d *Database) CreateSchema(name, owner string) error
- func (d *Database) CreateSchemaContext(ctx context.Context, name, owner string) error
- func (d *Database) CreateSequence(req CreateSequenceRequest) error
- func (d *Database) CreateSequenceContext(ctx context.Context, req CreateSequenceRequest) error
- func (d *Database) CreateStoredProcedure(schema, name, body string) error
- func (d *Database) CreateStoredProcedureContext(ctx context.Context, schema, name, body string) error
- func (d *Database) CreateSynonym(schema, name, baseObject string) error
- func (d *Database) CreateSynonymContext(ctx context.Context, schema, name, baseObject string) error
- func (d *Database) CreateTable(req CreateTableRequest) error
- func (d *Database) CreateTableContext(ctx context.Context, req CreateTableRequest) error
- func (d *Database) CreateUser(userName, loginName, defaultSchema string) error
- func (d *Database) CreateUserContext(ctx context.Context, userName, loginName, defaultSchema string) error
- func (d *Database) DatabaseExtendedProperties() ([]*ExtendedProperty, error)
- func (d *Database) DatabaseExtendedPropertiesContext(ctx context.Context) ([]*ExtendedProperty, error)
- func (d *Database) DatabaseExtendedPropertySeq(ctx context.Context) iter.Seq2[*ExtendedProperty, error]
- func (d *Database) DatabasePermissionSeq(ctx context.Context) iter.Seq2[*DatabasePermissionEntry, error]
- func (d *Database) DatabasePermissions() ([]*DatabasePermissionEntry, error)
- func (d *Database) DatabasePermissionsContext(ctx context.Context) ([]*DatabasePermissionEntry, error)
- func (d *Database) DatabaseRoleSeq(ctx context.Context) iter.Seq2[*DatabaseRole, error]
- func (d *Database) DatabaseRoles() ([]*DatabaseRole, error)
- func (d *Database) DatabaseRolesContext(ctx context.Context) ([]*DatabaseRole, error)
- func (d *Database) DatabaseScopedConfigSeq(ctx context.Context) iter.Seq2[*DatabaseScopedConfig, error]
- func (d *Database) DatabaseScopedConfigs() ([]*DatabaseScopedConfig, error)
- func (d *Database) DatabaseScopedConfigsContext(ctx context.Context) ([]*DatabaseScopedConfig, error)
- func (d *Database) DenyColumnPermission(schema, name string, permission ObjectPermission, columns []string, ...) error
- func (d *Database) DenyColumnPermissionContext(ctx context.Context, schema, name string, permission ObjectPermission, ...) error
- func (d *Database) DenyColumnPermissionWithOptions(schema, name string, permission ObjectPermission, columns []string, ...) error
- func (d *Database) DenyColumnPermissionWithOptionsContext(ctx context.Context, schema, name string, permission ObjectPermission, ...) error
- func (d *Database) DenyDatabasePermission(permission, principal string) error
- func (d *Database) DenyDatabasePermissionContext(ctx context.Context, permission, principal string) error
- func (d *Database) DenyDatabasePermissionWithOptions(permission, principal string, opts PermissionOptions) error
- func (d *Database) DenyDatabasePermissionWithOptionsContext(ctx context.Context, permission, principal string, opts PermissionOptions) error
- func (d *Database) DenyPermission(schema, name string, permission ObjectPermission, principal string) error
- func (d *Database) DenyPermissionContext(ctx context.Context, schema, name string, permission ObjectPermission, ...) error
- func (d *Database) DenyPermissionWithOptions(schema, name string, permission ObjectPermission, principal string, ...) error
- func (d *Database) DenyPermissionWithOptionsContext(ctx context.Context, schema, name string, permission ObjectPermission, ...) error
- func (d *Database) DenySchemaPermission(schemaName string, permission ObjectPermission, principal string) error
- func (d *Database) DenySchemaPermissionContext(ctx context.Context, schemaName string, permission ObjectPermission, ...) error
- func (d *Database) DenySchemaPermissionWithOptions(schemaName string, permission ObjectPermission, principal string, ...) error
- func (d *Database) DenySchemaPermissionWithOptionsContext(ctx context.Context, schemaName string, permission ObjectPermission, ...) error
- func (d *Database) Dependencies(schema, name string) ([]*Dependency, error)
- func (d *Database) DependenciesContext(ctx context.Context, schema, name string) ([]*Dependency, error)
- func (d *Database) DependencySeq(ctx context.Context, schema, name string) iter.Seq2[*Dependency, error]
- func (d *Database) DependentSeq(ctx context.Context, schema, name string) iter.Seq2[*Dependency, error]
- func (d *Database) Dependents(schema, name string) ([]*Dependency, error)
- func (d *Database) DependentsContext(ctx context.Context, schema, name string) ([]*Dependency, error)
- func (d *Database) DropExtendedProperty(name string, level ExtendedPropertyLevel) error
- func (d *Database) DropExtendedPropertyContext(ctx context.Context, name string, level ExtendedPropertyLevel) error
- func (d *Database) DropSchema(name string) error
- func (d *Database) DropSchemaContext(ctx context.Context, name string) error
- func (d *Database) DropStoredProcedure(schema, name string) error
- func (d *Database) DropStoredProcedureContext(ctx context.Context, schema, name string) error
- func (d *Database) DropTable(schema, name string, cascade bool) error
- func (d *Database) DropTableContext(ctx context.Context, schema, name string, cascade bool) error
- func (d *Database) DropUser(name string) error
- func (d *Database) DropUserContext(ctx context.Context, name string) error
- func (d *Database) EffectiveObjectPermissionSeq(ctx context.Context, schema, name, principal string) iter.Seq2[*EffectivePermission, error]
- func (d *Database) EffectiveObjectPermissions(schema, name, principal string) ([]*EffectivePermission, error)
- func (d *Database) EffectiveObjectPermissionsContext(ctx context.Context, schema, name, principal string) ([]*EffectivePermission, error)
- func (d *Database) EffectivePermissionSeq(ctx context.Context, principal string) iter.Seq2[*EffectivePermission, error]
- func (d *Database) EffectivePermissions(principal string) ([]*EffectivePermission, error)
- func (d *Database) EffectivePermissionsContext(ctx context.Context, principal string) ([]*EffectivePermission, error)
- func (d *Database) EffectiveSchemaPermissionSeq(ctx context.Context, schemaName, principal string) iter.Seq2[*EffectivePermission, error]
- func (d *Database) EffectiveSchemaPermissions(schemaName, principal string) ([]*EffectivePermission, error)
- func (d *Database) EffectiveSchemaPermissionsContext(ctx context.Context, schemaName, principal string) ([]*EffectivePermission, error)
- func (d *Database) EstimatedPlan(sql string) (*ExecutionPlan, error)
- func (d *Database) EstimatedPlanContext(ctx context.Context, sqlText string) (*ExecutionPlan, error)
- func (d *Database) ExecProc(schema, name string, params ...ProcParam) (ProcResult, error)
- func (d *Database) ExecProcContext(ctx context.Context, schema, name string, params ...ProcParam) (ProcResult, error)
- func (d *Database) ExtendedProperties(level ExtendedPropertyLevel) ([]*ExtendedProperty, error)
- func (d *Database) ExtendedPropertiesContext(ctx context.Context, level ExtendedPropertyLevel) ([]*ExtendedProperty, error)
- func (d *Database) ExtendedPropertySeq(ctx context.Context, level ExtendedPropertyLevel) iter.Seq2[*ExtendedProperty, error]
- func (d *Database) FileGroupSeq(ctx context.Context) iter.Seq2[*FileGroup, error]
- func (d *Database) FileGroups() ([]*FileGroup, error)
- func (d *Database) FileGroupsContext(ctx context.Context) ([]*FileGroup, error)
- func (d *Database) FileSeq(ctx context.Context) iter.Seq2[*DatabaseFileInfo, error]
- func (d *Database) Files() ([]*DatabaseFileInfo, error)
- func (d *Database) FilesContext(ctx context.Context) ([]*DatabaseFileInfo, error)
- func (d *Database) FindSecurables(search SecurableSearch) ([]SecurableRef, error)
- func (d *Database) FindSecurablesContext(ctx context.Context, search SecurableSearch) ([]SecurableRef, error)
- func (d *Database) FlushQueryStore() error
- func (d *Database) FlushQueryStoreContext(ctx context.Context) error
- func (d *Database) GrantColumnPermission(schema, name string, permission ObjectPermission, columns []string, ...) error
- func (d *Database) GrantColumnPermissionContext(ctx context.Context, schema, name string, permission ObjectPermission, ...) error
- func (d *Database) GrantColumnPermissionWithOptions(schema, name string, permission ObjectPermission, columns []string, ...) error
- func (d *Database) GrantColumnPermissionWithOptionsContext(ctx context.Context, schema, name string, permission ObjectPermission, ...) error
- func (d *Database) GrantDatabasePermission(permission, principal string) error
- func (d *Database) GrantDatabasePermissionContext(ctx context.Context, permission, principal string) error
- func (d *Database) GrantDatabasePermissionWithOptions(permission, principal string, opts PermissionOptions) error
- func (d *Database) GrantDatabasePermissionWithOptionsContext(ctx context.Context, permission, principal string, opts PermissionOptions) error
- func (d *Database) GrantPermission(schema, name string, permission ObjectPermission, principal string) error
- func (d *Database) GrantPermissionContext(ctx context.Context, schema, name string, permission ObjectPermission, ...) error
- func (d *Database) GrantPermissionWithOptions(schema, name string, permission ObjectPermission, principal string, ...) error
- func (d *Database) GrantPermissionWithOptionsContext(ctx context.Context, schema, name string, permission ObjectPermission, ...) error
- func (d *Database) GrantSchemaPermission(schemaName string, permission ObjectPermission, principal string) error
- func (d *Database) GrantSchemaPermissionContext(ctx context.Context, schemaName string, permission ObjectPermission, ...) error
- func (d *Database) GrantSchemaPermissionWithOptions(schemaName string, permission ObjectPermission, principal string, ...) error
- func (d *Database) GrantSchemaPermissionWithOptionsContext(ctx context.Context, schemaName string, permission ObjectPermission, ...) error
- func (d *Database) ID() int
- func (d *Database) IsReadOnly() bool
- func (d *Database) IsSystem() bool
- func (d *Database) Name() string
- func (d *Database) ObjectColumnSeq(ctx context.Context, schema, name string) iter.Seq2[*Column, error]
- func (d *Database) ObjectColumns(schema, name string) ([]*Column, error)
- func (d *Database) ObjectColumnsContext(ctx context.Context, schema, name string) ([]*Column, error)
- func (d *Database) Options() (*DatabaseOptions, error)
- func (d *Database) OptionsContext(ctx context.Context) (*DatabaseOptions, error)
- func (d *Database) PartitionFunctionSeq(ctx context.Context) iter.Seq2[*PartitionFunction, error]
- func (d *Database) PartitionFunctions() ([]*PartitionFunction, error)
- func (d *Database) PartitionFunctionsContext(ctx context.Context) ([]*PartitionFunction, error)
- func (d *Database) PartitionSchemeSeq(ctx context.Context) iter.Seq2[*PartitionScheme, error]
- func (d *Database) PartitionSchemes() ([]*PartitionScheme, error)
- func (d *Database) PartitionSchemesContext(ctx context.Context) ([]*PartitionScheme, error)
- func (d *Database) PermissionSeq(ctx context.Context, schema, name string) iter.Seq2[*PermissionEntry, error]
- func (d *Database) Permissions(schema, name string) ([]*PermissionEntry, error)
- func (d *Database) PermissionsContext(ctx context.Context, schema, name string) ([]*PermissionEntry, error)
- func (d *Database) PermissionsForPrincipal(principal string) ([]*PrincipalSecurable, error)
- func (d *Database) PermissionsForPrincipalContext(ctx context.Context, principal string) ([]*PrincipalSecurable, error)
- func (d *Database) PermissionsForPrincipalSeq(ctx context.Context, principal string) iter.Seq2[*PrincipalSecurable, error]
- func (d *Database) QueryStore() (*QueryStoreInfo, error)
- func (d *Database) QueryStoreContext(ctx context.Context) (*QueryStoreInfo, error)
- func (d *Database) RecoveryModel() RecoveryModel
- func (d *Database) RemoveFile(name string) error
- func (d *Database) RemoveFileContext(ctx context.Context, name string) error
- func (d *Database) RemoveFileGroup(name string) error
- func (d *Database) RemoveFileGroupContext(ctx context.Context, name string) error
- func (d *Database) RemoveRoleMember(roleName, memberName string) error
- func (d *Database) RemoveRoleMemberContext(ctx context.Context, roleName, memberName string) error
- func (d *Database) RenameTable(schema, oldName, newName string) error
- func (d *Database) RenameTableContext(ctx context.Context, schema, oldName, newName string) error
- func (d *Database) RevokeColumnPermission(schema, name string, permission ObjectPermission, columns []string, ...) error
- func (d *Database) RevokeColumnPermissionContext(ctx context.Context, schema, name string, permission ObjectPermission, ...) error
- func (d *Database) RevokeColumnPermissionWithOptions(schema, name string, permission ObjectPermission, columns []string, ...) error
- func (d *Database) RevokeColumnPermissionWithOptionsContext(ctx context.Context, schema, name string, permission ObjectPermission, ...) error
- func (d *Database) RevokeDatabasePermission(permission, principal string) error
- func (d *Database) RevokeDatabasePermissionContext(ctx context.Context, permission, principal string) error
- func (d *Database) RevokeDatabasePermissionWithOptions(permission, principal string, opts PermissionOptions) error
- func (d *Database) RevokeDatabasePermissionWithOptionsContext(ctx context.Context, permission, principal string, opts PermissionOptions) error
- func (d *Database) RevokePermission(schema, name string, permission ObjectPermission, principal string) error
- func (d *Database) RevokePermissionContext(ctx context.Context, schema, name string, permission ObjectPermission, ...) error
- func (d *Database) RevokePermissionWithOptions(schema, name string, permission ObjectPermission, principal string, ...) error
- func (d *Database) RevokePermissionWithOptionsContext(ctx context.Context, schema, name string, permission ObjectPermission, ...) error
- func (d *Database) RevokeSchemaPermission(schemaName string, permission ObjectPermission, principal string) error
- func (d *Database) RevokeSchemaPermissionContext(ctx context.Context, schemaName string, permission ObjectPermission, ...) error
- func (d *Database) RevokeSchemaPermissionWithOptions(schemaName string, permission ObjectPermission, principal string, ...) error
- func (d *Database) RevokeSchemaPermissionWithOptionsContext(ctx context.Context, schemaName string, permission ObjectPermission, ...) error
- func (d *Database) RoleByName(name string) (*DatabaseRole, error)
- func (d *Database) RoleByNameContext(ctx context.Context, name string) (*DatabaseRole, error)
- func (d *Database) RoleMemberSeq(ctx context.Context, roleName string) iter.Seq2[*RoleMember, error]
- func (d *Database) RoleMembers(roleName string) ([]*RoleMember, error)
- func (d *Database) RoleMembersContext(ctx context.Context, roleName string) ([]*RoleMember, error)
- func (d *Database) SchemaPermissionSeq(ctx context.Context, schemaName string) iter.Seq2[*PermissionEntry, error]
- func (d *Database) SchemaPermissions(schemaName string) ([]*PermissionEntry, error)
- func (d *Database) SchemaPermissionsContext(ctx context.Context, schemaName string) ([]*PermissionEntry, error)
- func (d *Database) SchemaSeq(ctx context.Context) iter.Seq2[*Schema, error]
- func (d *Database) Schemas() ([]*Schema, error)
- func (d *Database) SchemasContext(ctx context.Context) ([]*Schema, error)
- func (d *Database) Search(pattern string) ([]*SearchResult, error)
- func (d *Database) SearchContext(ctx context.Context, pattern string) ([]*SearchResult, error)
- func (d *Database) SearchSeq(ctx context.Context, pattern string) iter.Seq2[*SearchResult, error]
- func (d *Database) SecurityPolicies() ([]*SecurityPolicy, error)
- func (d *Database) SecurityPoliciesContext(ctx context.Context) ([]*SecurityPolicy, error)
- func (d *Database) SecurityPolicySeq(ctx context.Context) iter.Seq2[*SecurityPolicy, error]
- func (d *Database) SequenceSeq(ctx context.Context) iter.Seq2[*Sequence, error]
- func (d *Database) Sequences() ([]*Sequence, error)
- func (d *Database) SequencesContext(ctx context.Context) ([]*Sequence, error)
- func (d *Database) Server() *Server
- func (d *Database) SetChangeTracking(info ChangeTrackingInfo) error
- func (d *Database) SetChangeTrackingContext(ctx context.Context, info ChangeTrackingInfo) error
- func (d *Database) SetCompatibilityLevel(level CompatibilityLevel) error
- func (d *Database) SetCompatibilityLevelContext(ctx context.Context, level CompatibilityLevel) error
- func (d *Database) SetDatabaseOption(opt DatabaseOption, value string) error
- func (d *Database) SetDatabaseOptionContext(ctx context.Context, opt DatabaseOption, value string) error
- func (d *Database) SetDatabaseScopedConfig(name, value string, forSecondary bool) error
- func (d *Database) SetDatabaseScopedConfigContext(ctx context.Context, name, value string, forSecondary bool) error
- func (d *Database) SetDefaultFileGroup(name string) error
- func (d *Database) SetDefaultFileGroupContext(ctx context.Context, name string) error
- func (d *Database) SetExtendedProperty(name, value string, level ExtendedPropertyLevel) error
- func (d *Database) SetExtendedPropertyContext(ctx context.Context, name, value string, level ExtendedPropertyLevel) error
- func (d *Database) SetFileGroupReadOnly(name string, readOnly bool) error
- func (d *Database) SetFileGroupReadOnlyContext(ctx context.Context, name string, readOnly bool) error
- func (d *Database) SetOffline() error
- func (d *Database) SetOfflineContext(ctx context.Context) error
- func (d *Database) SetOnline() error
- func (d *Database) SetOnlineContext(ctx context.Context) error
- func (d *Database) SetOwner(principal string) error
- func (d *Database) SetOwnerContext(ctx context.Context, principal string) error
- func (d *Database) SetQueryStoreOptions(opts QueryStoreOptions) error
- func (d *Database) SetQueryStoreOptionsContext(ctx context.Context, opts QueryStoreOptions) error
- func (d *Database) SetReadOnly(readOnly bool) error
- func (d *Database) SetReadOnlyContext(ctx context.Context, readOnly bool) error
- func (d *Database) SetRecoveryModel(model RecoveryModel) error
- func (d *Database) SetRecoveryModelContext(ctx context.Context, model RecoveryModel) error
- func (d *Database) SetTableChangeTracking(schema, name string, enable, trackColumns bool) error
- func (d *Database) SetTableChangeTrackingContext(ctx context.Context, schema, name string, enable, trackColumns bool) error
- func (d *Database) SetUserAccess(mode string) error
- func (d *Database) SetUserAccessContext(ctx context.Context, mode string) error
- func (d *Database) SpaceUsed() (SpaceInfo, error)
- func (d *Database) SpaceUsedContext(ctx context.Context) (SpaceInfo, error)
- func (d *Database) State() string
- func (d *Database) StoredProcedureSeq(ctx context.Context) iter.Seq2[*StoredProcedure, error]
- func (d *Database) StoredProcedures() ([]*StoredProcedure, error)
- func (d *Database) StoredProceduresContext(ctx context.Context) ([]*StoredProcedure, error)
- func (d *Database) SynonymSeq(ctx context.Context) iter.Seq2[*Synonym, error]
- func (d *Database) Synonyms() ([]*Synonym, error)
- func (d *Database) SynonymsContext(ctx context.Context) ([]*Synonym, error)
- func (d *Database) SystemCatalog() (*Catalog, error)
- func (d *Database) SystemCatalogContext(ctx context.Context) (*Catalog, error)
- func (d *Database) SystemFunctionSeq(ctx context.Context) iter.Seq2[*UserDefinedFunction, error]
- func (d *Database) SystemFunctions() ([]*UserDefinedFunction, error)
- func (d *Database) SystemFunctionsContext(ctx context.Context) ([]*UserDefinedFunction, error)
- func (d *Database) SystemStoredProcedureSeq(ctx context.Context) iter.Seq2[*StoredProcedure, error]
- func (d *Database) SystemStoredProcedures() ([]*StoredProcedure, error)
- func (d *Database) SystemStoredProceduresContext(ctx context.Context) ([]*StoredProcedure, error)
- func (d *Database) SystemViewSeq(ctx context.Context) iter.Seq2[*View, error]
- func (d *Database) SystemViews() ([]*View, error)
- func (d *Database) SystemViewsContext(ctx context.Context) ([]*View, error)
- func (d *Database) TableByName(schema, name string) (*Table, error)
- func (d *Database) TableByNameContext(ctx context.Context, schema, name string) (*Table, error)
- func (d *Database) TableChangeTracking() ([]*TableChangeTracking, error)
- func (d *Database) TableChangeTrackingContext(ctx context.Context) ([]*TableChangeTracking, error)
- func (d *Database) TableChangeTrackingSeq(ctx context.Context) iter.Seq2[*TableChangeTracking, error]
- func (d *Database) TableRowCounts() (map[int]int64, error)
- func (d *Database) TableRowCountsContext(ctx context.Context) (map[int]int64, error)
- func (d *Database) TableSeq(ctx context.Context) iter.Seq2[*Table, error]
- func (d *Database) TableSpaceUsedAll() (map[int]*TableSpaceInfo, error)
- func (d *Database) TableSpaceUsedAllContext(ctx context.Context) (map[int]*TableSpaceInfo, error)
- func (d *Database) Tables() ([]*Table, error)
- func (d *Database) TablesBySchema(schema string) ([]*Table, error)
- func (d *Database) TablesBySchemaContext(ctx context.Context, schema string) ([]*Table, error)
- func (d *Database) TablesBySchemaSeq(ctx context.Context, schema string) iter.Seq2[*Table, error]
- func (d *Database) TablesContext(ctx context.Context) ([]*Table, error)
- func (d *Database) TriggerSeq(ctx context.Context) iter.Seq2[*Trigger, error]
- func (d *Database) Triggers() ([]*Trigger, error)
- func (d *Database) TriggersContext(ctx context.Context) ([]*Trigger, error)
- func (d *Database) UserByName(name string) (*User, error)
- func (d *Database) UserByNameContext(ctx context.Context, name string) (*User, error)
- func (d *Database) UserDefinedFunctionSeq(ctx context.Context) iter.Seq2[*UserDefinedFunction, error]
- func (d *Database) UserDefinedFunctions() ([]*UserDefinedFunction, error)
- func (d *Database) UserDefinedFunctionsContext(ctx context.Context) ([]*UserDefinedFunction, error)
- func (d *Database) UserSeq(ctx context.Context) iter.Seq2[*User, error]
- func (d *Database) Users() ([]*User, error)
- func (d *Database) UsersContext(ctx context.Context) ([]*User, error)
- func (d *Database) ViewSeq(ctx context.Context) iter.Seq2[*View, error]
- func (d *Database) Views() ([]*View, error)
- func (d *Database) ViewsContext(ctx context.Context) ([]*View, error)
- type DatabaseFile
- type DatabaseFileInfo
- type DatabaseFileSpec
- type DatabaseOption
- type DatabaseOptions
- type DatabasePermissionEntry
- type DatabaseRole
- type DatabaseScopedConfig
- type Dependency
- type DiskVolumeInfo
- type EffectivePermission
- type ErrorLogEntry
- type ExecutionPlan
- type ExtendedProperty
- type ExtendedPropertyLevel
- type FileGroup
- type FileModify
- type ForeignKey
- type Index
- func (idx *Index) Disable(t *Table) error
- func (idx *Index) DisableContext(ctx context.Context, t *Table) error
- func (idx *Index) Drop(t *Table) error
- func (idx *Index) DropContext(ctx context.Context, t *Table) error
- func (idx *Index) Enable(t *Table) error
- func (idx *Index) EnableContext(ctx context.Context, t *Table) error
- func (idx *Index) Fragmentation(t *Table, mode string) (*IndexFragmentation, error)
- func (idx *Index) FragmentationContext(ctx context.Context, t *Table, mode string) (*IndexFragmentation, error)
- func (idx *Index) Rebuild(t *Table, fillFactor int) error
- func (idx *Index) RebuildContext(ctx context.Context, t *Table, fillFactor int) error
- func (idx *Index) RebuildWithOptions(t *Table, fillFactor int, padIndex bool, dataCompression string) error
- func (idx *Index) RebuildWithOptionsContext(ctx context.Context, t *Table, fillFactor int, padIndex bool, ...) error
- func (idx *Index) Rename(t *Table, newName string) error
- func (idx *Index) RenameContext(ctx context.Context, t *Table, newName string) error
- func (idx *Index) Reorganize(t *Table) error
- func (idx *Index) ReorganizeContext(ctx context.Context, t *Table) error
- func (idx *Index) SetIncludedColumns(t *Table, columns []string) error
- func (idx *Index) SetIncludedColumnsContext(ctx context.Context, t *Table, columns []string) error
- func (idx *Index) SetLockOptions(t *Table, allowRowLocks, allowPageLocks bool) error
- func (idx *Index) SetLockOptionsContext(ctx context.Context, t *Table, allowRowLocks, allowPageLocks bool) error
- func (idx *Index) SetOptions(t *Table, ignoreDupKey, allowRowLocks, allowPageLocks bool) error
- func (idx *Index) SetOptionsContext(ctx context.Context, t *Table, ...) error
- func (idx *Index) StorageInfo(t *Table) (*IndexStorageInfo, error)
- func (idx *Index) StorageInfoContext(ctx context.Context, t *Table) (*IndexStorageInfo, error)
- func (idx *Index) UpdateStatistics(t *Table) error
- func (idx *Index) UpdateStatisticsContext(ctx context.Context, t *Table) error
- type IndexAllocationUnit
- type IndexColumn
- type IndexColumnDef
- type IndexFragmentation
- type IndexStorageInfo
- type IndexType
- type Job
- func (j *Job) AddSchedule(req JobScheduleRequest) error
- func (j *Job) AddScheduleContext(ctx context.Context, req JobScheduleRequest) error
- func (j *Job) AddStep(req JobStepRequest) error
- func (j *Job) AddStepContext(ctx context.Context, req JobStepRequest) error
- func (j *Job) AttachSchedule(scheduleName string) error
- func (j *Job) AttachScheduleContext(ctx context.Context, scheduleName string) error
- func (j *Job) DetachSchedule(scheduleName string) error
- func (j *Job) DetachScheduleContext(ctx context.Context, scheduleName string) error
- func (j *Job) Disable() error
- func (j *Job) DisableContext(ctx context.Context) error
- func (j *Job) Drop() error
- func (j *Job) DropContext(ctx context.Context) error
- func (j *Job) Enable() error
- func (j *Job) EnableContext(ctx context.Context) error
- func (j *Job) History(limit int) ([]*JobHistoryEntry, error)
- func (j *Job) HistoryContext(ctx context.Context, limit int) ([]*JobHistoryEntry, error)
- func (j *Job) HistorySeq(ctx context.Context, limit int) iter.Seq2[*JobHistoryEntry, error]
- func (j *Job) Rename(newName string) error
- func (j *Job) RenameContext(ctx context.Context, newName string) error
- func (j *Job) ScheduleSeq(ctx context.Context) iter.Seq2[*Schedule, error]
- func (j *Job) Schedules() ([]*Schedule, error)
- func (j *Job) SchedulesContext(ctx context.Context) ([]*Schedule, error)
- func (j *Job) SetCategory(category string) error
- func (j *Job) SetCategoryContext(ctx context.Context, category string) error
- func (j *Job) SetDeleteLevel(level NotifyLevel) error
- func (j *Job) SetDeleteLevelContext(ctx context.Context, level NotifyLevel) error
- func (j *Job) SetDescription(desc string) error
- func (j *Job) SetDescriptionContext(ctx context.Context, desc string) error
- func (j *Job) SetEmailNotify(operatorName string, level NotifyLevel) error
- func (j *Job) SetEmailNotifyContext(ctx context.Context, operatorName string, level NotifyLevel) error
- func (j *Job) SetOwner(loginName string) error
- func (j *Job) SetOwnerContext(ctx context.Context, loginName string) error
- func (j *Job) SetStartStep(stepID int) error
- func (j *Job) SetStartStepContext(ctx context.Context, stepID int) error
- func (j *Job) Start(stepName string) error
- func (j *Job) StartContext(ctx context.Context, stepName string) error
- func (j *Job) StepSeq(ctx context.Context) iter.Seq2[*JobStep, error]
- func (j *Job) Steps() ([]*JobStep, error)
- func (j *Job) StepsContext(ctx context.Context) ([]*JobStep, error)
- func (j *Job) Stop() error
- func (j *Job) StopContext(ctx context.Context) error
- type JobHistoryEntry
- type JobNotificationRef
- type JobOutcome
- type JobScheduleRequest
- type JobState
- type JobStep
- type JobStepRequest
- type KerberosOptions
- type Language
- type LinkedServer
- type Login
- func (l *Login) AddServerRoleMember(roleName string) error
- func (l *Login) AddServerRoleMemberContext(ctx context.Context, roleName string) error
- func (l *Login) ChangePassword(newPassword string) error
- func (l *Login) ChangePasswordContext(ctx context.Context, newPassword string) error
- func (l *Login) ChangePasswordWithOptions(newPassword string, mustChange, unlock bool) error
- func (l *Login) ChangePasswordWithOptionsContext(ctx context.Context, newPassword string, mustChange, unlock bool) error
- func (l *Login) Details() (*LoginDetails, error)
- func (l *Login) DetailsContext(ctx context.Context) (*LoginDetails, error)
- func (l *Login) Disable() error
- func (l *Login) DisableContext(ctx context.Context) error
- func (l *Login) Drop() error
- func (l *Login) DropContext(ctx context.Context) error
- func (l *Login) Enable() error
- func (l *Login) EnableContext(ctx context.Context) error
- func (l *Login) MapCredential(credential string) error
- func (l *Login) MapCredentialContext(ctx context.Context, credential string) error
- func (l *Login) MapToDatabase(dbName, userName, defaultSchema string) error
- func (l *Login) MapToDatabaseContext(ctx context.Context, dbName, userName, defaultSchema string) error
- func (l *Login) RemoveServerRoleMember(roleName string) error
- func (l *Login) RemoveServerRoleMemberContext(ctx context.Context, roleName string) error
- func (l *Login) Rename(newName string) error
- func (l *Login) RenameContext(ctx context.Context, newName string) error
- func (l *Login) SetDefaultDatabase(name string) error
- func (l *Login) SetDefaultDatabaseContext(ctx context.Context, name string) error
- func (l *Login) SetDefaultLanguage(lang string) error
- func (l *Login) SetDefaultLanguageContext(ctx context.Context, lang string) error
- func (l *Login) SetPasswordPolicy(checkPolicy, checkExpiration bool) error
- func (l *Login) SetPasswordPolicyContext(ctx context.Context, checkPolicy, checkExpiration bool) error
- func (l *Login) UnmapCredential(credential string) error
- func (l *Login) UnmapCredentialContext(ctx context.Context, credential string) error
- func (l *Login) UnmapFromDatabase(dbName string) error
- func (l *Login) UnmapFromDatabaseContext(ctx context.Context, dbName string) error
- func (l *Login) UserMappingSeq(ctx context.Context) iter.Seq2[*LoginUserMapping, error]
- func (l *Login) UserMappings() ([]*LoginUserMapping, error)
- func (l *Login) UserMappingsContext(ctx context.Context) ([]*LoginUserMapping, error)
- type LoginDetails
- type LoginUserMapping
- type MailProfile
- type NotificationMethod
- type NotifyLevel
- type ObjectPermission
- type Operator
- func (o *Operator) Disable() error
- func (o *Operator) DisableContext(ctx context.Context) error
- func (o *Operator) Drop() error
- func (o *Operator) DropContext(ctx context.Context) error
- func (o *Operator) Enable() error
- func (o *Operator) EnableContext(ctx context.Context) error
- func (o *Operator) NotifyingAlertSeq(ctx context.Context) iter.Seq2[*AlertNotificationRef, error]
- func (o *Operator) NotifyingAlerts() ([]*AlertNotificationRef, error)
- func (o *Operator) NotifyingAlertsContext(ctx context.Context) ([]*AlertNotificationRef, error)
- func (o *Operator) NotifyingJobSeq(ctx context.Context) iter.Seq2[*JobNotificationRef, error]
- func (o *Operator) NotifyingJobs() ([]*JobNotificationRef, error)
- func (o *Operator) NotifyingJobsContext(ctx context.Context) ([]*JobNotificationRef, error)
- func (o *Operator) Rename(newName string) error
- func (o *Operator) RenameContext(ctx context.Context, newName string) error
- func (o *Operator) SetCategory(category string) error
- func (o *Operator) SetCategoryContext(ctx context.Context, category string) error
- func (o *Operator) SetEmailAddress(addr string) error
- func (o *Operator) SetEmailAddressContext(ctx context.Context, addr string) error
- type PartitionFunction
- func (pf *PartitionFunction) Drop() error
- func (pf *PartitionFunction) DropContext(ctx context.Context) error
- func (pf *PartitionFunction) MergeRange(value string) error
- func (pf *PartitionFunction) MergeRangeContext(ctx context.Context, value string) error
- func (pf *PartitionFunction) SplitRange(value string) error
- func (pf *PartitionFunction) SplitRangeContext(ctx context.Context, value string) error
- type PartitionInfo
- type PartitionScheme
- type PermissionEntry
- type PermissionOptions
- type PermissionState
- type PrincipalSecurable
- type ProcParam
- type ProcResult
- type ProcessorInfo
- type QueryStoreInfo
- type QueryStoreOptions
- type RecoveryModel
- type RelocateFile
- type RestoreOptions
- type RoleMember
- type SQLError
- type Schedule
- func (sch *Schedule) Description() string
- func (sch *Schedule) Disable() error
- func (sch *Schedule) DisableContext(ctx context.Context) error
- func (sch *Schedule) Drop() error
- func (sch *Schedule) DropContext(ctx context.Context) error
- func (sch *Schedule) Enable() error
- func (sch *Schedule) EnableContext(ctx context.Context) error
- func (sch *Schedule) JobSeq(ctx context.Context) iter.Seq2[*Job, error]
- func (sch *Schedule) Jobs() ([]*Job, error)
- func (sch *Schedule) JobsContext(ctx context.Context) ([]*Job, error)
- func (sch *Schedule) Rename(newName string) error
- func (sch *Schedule) RenameContext(ctx context.Context, newName string) error
- func (sch *Schedule) SetActiveRange(startDate, endDate time.Time, startTime, endTime int) error
- func (sch *Schedule) SetActiveRangeContext(ctx context.Context, startDate, endDate time.Time, startTime, endTime int) error
- func (sch *Schedule) SetFrequency(f ScheduleFrequency) error
- func (sch *Schedule) SetFrequencyContext(ctx context.Context, f ScheduleFrequency) error
- func (sch *Schedule) SetOwner(loginName string) error
- func (sch *Schedule) SetOwnerContext(ctx context.Context, loginName string) error
- type ScheduleFreqType
- type ScheduleFrequency
- type ScheduleSubdayType
- type Schema
- func (s *Schema) ChangeOwner(newOwner string) error
- func (s *Schema) ChangeOwnerContext(ctx context.Context, newOwner string) error
- func (s *Schema) Drop() error
- func (s *Schema) DropContext(ctx context.Context) error
- func (s *Schema) ObjectCount() (int, error)
- func (s *Schema) ObjectCountContext(ctx context.Context) (int, error)
- type ScriptCollector
- type ScriptOptions
- type Scripter
- func (sc *Scripter) ScriptDatabase() (string, error)
- func (sc *Scripter) ScriptFunction(schema, name string) (string, error)
- func (sc *Scripter) ScriptFunctionContext(ctx context.Context, schema, name string) (string, error)
- func (sc *Scripter) ScriptStoredProcedure(schema, name string) (string, error)
- func (sc *Scripter) ScriptStoredProcedureContext(ctx context.Context, schema, name string) (string, error)
- func (sc *Scripter) ScriptTable(schema, name string) (string, error)
- func (sc *Scripter) ScriptTableContext(ctx context.Context, schema, name string) (string, error)
- func (sc *Scripter) ScriptView(schema, name string) (string, error)
- func (sc *Scripter) ScriptViewContext(ctx context.Context, schema, name string) (string, error)
- type SearchResult
- type SecurableRef
- type SecurableSearch
- type SecurityPolicy
- func (p *SecurityPolicy) Disable() error
- func (p *SecurityPolicy) DisableContext(ctx context.Context) error
- func (p *SecurityPolicy) Drop() error
- func (p *SecurityPolicy) DropContext(ctx context.Context) error
- func (p *SecurityPolicy) Enable() error
- func (p *SecurityPolicy) EnableContext(ctx context.Context) error
- type SecurityPredicate
- type Sequence
- func (seq *Sequence) Drop() error
- func (seq *Sequence) DropContext(ctx context.Context) error
- func (seq *Sequence) NextValue() (int64, error)
- func (seq *Sequence) NextValueContext(ctx context.Context) (int64, error)
- func (seq *Sequence) Restart(value int64) error
- func (seq *Sequence) RestartContext(ctx context.Context, value int64) error
- type Server
- func (s *Server) ActiveSessionSeq(ctx context.Context, includeSystem bool) iter.Seq2[*ActiveSession, error]
- func (s *Server) ActiveSessions(includeSystem bool) ([]*ActiveSession, error)
- func (s *Server) ActiveSessionsContext(ctx context.Context, includeSystem bool) ([]*ActiveSession, error)
- func (s *Server) AddServerRoleMember(roleName, memberName string) error
- func (s *Server) AddServerRoleMemberContext(ctx context.Context, roleName, memberName string) error
- func (s *Server) AgentInfo() (*AgentStatus, error)
- func (s *Server) AgentInfoContext(ctx context.Context) (*AgentStatus, error)
- func (s *Server) Alert(name string) *Alert
- func (s *Server) AlertByName(name string) (*Alert, error)
- func (s *Server) AlertByNameContext(ctx context.Context, name string) (*Alert, error)
- func (s *Server) AlertSeq(ctx context.Context) iter.Seq2[*Alert, error]
- func (s *Server) Alerts() ([]*Alert, error)
- func (s *Server) AlertsContext(ctx context.Context) ([]*Alert, error)
- func (s *Server) Backup(opts BackupOptions) error
- func (s *Server) BackupContext(ctx context.Context, opts BackupOptions) error
- func (s *Server) BackupFileList(device string) ([]*BackupFile, error)
- func (s *Server) BackupFileListContext(ctx context.Context, device string) ([]*BackupFile, error)
- func (s *Server) BackupFileListForSet(device string, fileNumber int) ([]*BackupFile, error)
- func (s *Server) BackupFileListForSetContext(ctx context.Context, device string, fileNumber int) ([]*BackupFile, error)
- func (s *Server) BackupFileSeq(ctx context.Context, device string) iter.Seq2[*BackupFile, error]
- func (s *Server) BackupHeaderSeq(ctx context.Context, device string) iter.Seq2[*BackupHeader, error]
- func (s *Server) BackupHeaders(device string) ([]*BackupHeader, error)
- func (s *Server) BackupHeadersContext(ctx context.Context, device string) ([]*BackupHeader, error)
- func (s *Server) BackupHistory(databaseName string) ([]*BackupInfo, error)
- func (s *Server) BackupHistoryContext(ctx context.Context, databaseName string) ([]*BackupInfo, error)
- func (s *Server) BackupHistorySeq(ctx context.Context, databaseName string) iter.Seq2[*BackupInfo, error]
- func (s *Server) Categories(class CategoryClass) ([]*Category, error)
- func (s *Server) CategoriesContext(ctx context.Context, class CategoryClass) ([]*Category, error)
- func (s *Server) CategorySeq(ctx context.Context, class CategoryClass) iter.Seq2[*Category, error]
- func (s *Server) Close() error
- func (s *Server) ConfigurationByName(name string) (*ConfigurationOption, error)
- func (s *Server) ConfigurationByNameContext(ctx context.Context, name string) (*ConfigurationOption, error)
- func (s *Server) ConfigurationSeq(ctx context.Context) iter.Seq2[*ConfigurationOption, error]
- func (s *Server) Configurations() ([]*ConfigurationOption, error)
- func (s *Server) ConfigurationsContext(ctx context.Context) ([]*ConfigurationOption, error)
- func (s *Server) CreateAlert(req CreateAlertRequest) (*Alert, error)
- func (s *Server) CreateAlertContext(ctx context.Context, req CreateAlertRequest) (*Alert, error)
- func (s *Server) CreateCategory(class CategoryClass, name string) error
- func (s *Server) CreateCategoryContext(ctx context.Context, class CategoryClass, name string) error
- func (s *Server) CreateDatabase(name string, opts *CreateDatabaseOptions) error
- func (s *Server) CreateDatabaseContext(ctx context.Context, name string, opts *CreateDatabaseOptions) error
- func (s *Server) CreateJob(req CreateJobRequest) (*Job, error)
- func (s *Server) CreateJobContext(ctx context.Context, req CreateJobRequest) (*Job, error)
- func (s *Server) CreateLogin(name, password string, opts *CreateLoginOptions) error
- func (s *Server) CreateLoginContext(ctx context.Context, name, password string, opts *CreateLoginOptions) error
- func (s *Server) CreateOperator(req CreateOperatorRequest) (*Operator, error)
- func (s *Server) CreateOperatorContext(ctx context.Context, req CreateOperatorRequest) (*Operator, error)
- func (s *Server) CreateSchedule(req CreateScheduleRequest) (*Schedule, error)
- func (s *Server) CreateScheduleContext(ctx context.Context, req CreateScheduleRequest) (*Schedule, error)
- func (s *Server) CredentialSeq(ctx context.Context) iter.Seq2[*Credential, error]
- func (s *Server) Credentials() ([]*Credential, error)
- func (s *Server) CredentialsContext(ctx context.Context) ([]*Credential, error)
- func (s *Server) CurrentDatabase() (string, error)
- func (s *Server) CurrentDatabaseContext(ctx context.Context) (string, error)
- func (s *Server) CurrentLogin() (string, error)
- func (s *Server) CurrentLoginContext(ctx context.Context) (string, error)
- func (s *Server) CycleErrorLog() error
- func (s *Server) CycleErrorLogContext(ctx context.Context) error
- func (s *Server) DB() *sql.DB
- func (s *Server) Database(name string) *Database
- func (s *Server) DatabaseByName(name string) (*Database, error)
- func (s *Server) DatabaseByNameContext(ctx context.Context, name string) (*Database, error)
- func (s *Server) DatabaseSeq(ctx context.Context) iter.Seq2[*Database, error]
- func (s *Server) Databases() ([]*Database, error)
- func (s *Server) DatabasesContext(ctx context.Context) ([]*Database, error)
- func (s *Server) DeleteCategory(class CategoryClass, name string) error
- func (s *Server) DeleteCategoryContext(ctx context.Context, class CategoryClass, name string) error
- func (s *Server) DenyServerPermission(permission, principal string) error
- func (s *Server) DenyServerPermissionContext(ctx context.Context, permission, principal string) error
- func (s *Server) DenyServerPermissionWithOptions(permission, principal string, opts PermissionOptions) error
- func (s *Server) DenyServerPermissionWithOptionsContext(ctx context.Context, permission, principal string, opts PermissionOptions) error
- func (s *Server) DiskVolumeSeq(ctx context.Context) iter.Seq2[DiskVolumeInfo, error]
- func (s *Server) DiskVolumes() ([]DiskVolumeInfo, error)
- func (s *Server) DiskVolumesContext(ctx context.Context) ([]DiskVolumeInfo, error)
- func (s *Server) DropDatabase(name string, force bool) error
- func (s *Server) DropDatabaseContext(ctx context.Context, name string, force bool) error
- func (s *Server) DropLogin(name string) error
- func (s *Server) DropLoginContext(ctx context.Context, name string) error
- func (s *Server) EffectiveServerPermissionSeq(ctx context.Context, login string) iter.Seq2[*EffectivePermission, error]
- func (s *Server) EffectiveServerPermissions(login string) ([]*EffectivePermission, error)
- func (s *Server) EffectiveServerPermissionsContext(ctx context.Context, login string) ([]*EffectivePermission, error)
- func (s *Server) EventAlertSeq(ctx context.Context) iter.Seq2[*Alert, error]
- func (s *Server) EventAlerts() ([]*Alert, error)
- func (s *Server) EventAlertsContext(ctx context.Context) ([]*Alert, error)
- func (s *Server) GrantServerPermission(permission, principal string) error
- func (s *Server) GrantServerPermissionContext(ctx context.Context, permission, principal string) error
- func (s *Server) GrantServerPermissionWithOptions(permission, principal string, opts PermissionOptions) error
- func (s *Server) GrantServerPermissionWithOptionsContext(ctx context.Context, permission, principal string, opts PermissionOptions) error
- func (s *Server) Info() *ServerInfo
- func (s *Server) Job(name string) *Job
- func (s *Server) JobByName(name string) (*Job, error)
- func (s *Server) JobByNameContext(ctx context.Context, name string) (*Job, error)
- func (s *Server) JobHistory(limit int) ([]*JobHistoryEntry, error)
- func (s *Server) JobHistoryContext(ctx context.Context, limit int) ([]*JobHistoryEntry, error)
- func (s *Server) JobHistorySeq(ctx context.Context, limit int) iter.Seq2[*JobHistoryEntry, error]
- func (s *Server) JobSeq(ctx context.Context) iter.Seq2[*Job, error]
- func (s *Server) Jobs() ([]*Job, error)
- func (s *Server) JobsContext(ctx context.Context) ([]*Job, error)
- func (s *Server) KillSession(sessionID int) error
- func (s *Server) KillSessionContext(ctx context.Context, sessionID int) error
- func (s *Server) LanguageSeq(ctx context.Context) iter.Seq2[*Language, error]
- func (s *Server) Languages() ([]*Language, error)
- func (s *Server) LanguagesContext(ctx context.Context) ([]*Language, error)
- func (s *Server) LinkedServerSeq(ctx context.Context) iter.Seq2[*LinkedServer, error]
- func (s *Server) LinkedServers() ([]*LinkedServer, error)
- func (s *Server) LinkedServersContext(ctx context.Context) ([]*LinkedServer, error)
- func (s *Server) Login(name string) *Login
- func (s *Server) LoginByName(name string) (*Login, error)
- func (s *Server) LoginByNameContext(ctx context.Context, name string) (*Login, error)
- func (s *Server) LoginSeq(ctx context.Context) iter.Seq2[*Login, error]
- func (s *Server) Logins() ([]*Login, error)
- func (s *Server) LoginsContext(ctx context.Context) ([]*Login, error)
- func (s *Server) MailProfileSeq(ctx context.Context) iter.Seq2[*MailProfile, error]
- func (s *Server) MailProfiles() ([]*MailProfile, error)
- func (s *Server) MailProfilesContext(ctx context.Context) ([]*MailProfile, error)
- func (s *Server) MemoryStats() (*ServerMemoryStats, error)
- func (s *Server) MemoryStatsContext(ctx context.Context) (*ServerMemoryStats, error)
- func (s *Server) Name() string
- func (s *Server) Operator(name string) *Operator
- func (s *Server) OperatorByName(name string) (*Operator, error)
- func (s *Server) OperatorByNameContext(ctx context.Context, name string) (*Operator, error)
- func (s *Server) OperatorSeq(ctx context.Context) iter.Seq2[*Operator, error]
- func (s *Server) Operators() ([]*Operator, error)
- func (s *Server) OperatorsContext(ctx context.Context) ([]*Operator, error)
- func (s *Server) ProcessorInfo() (*ProcessorInfo, error)
- func (s *Server) ProcessorInfoContext(ctx context.Context) (*ProcessorInfo, error)
- func (s *Server) ReadErrorLog(logNumber int) ([]*ErrorLogEntry, error)
- func (s *Server) ReadErrorLogContext(ctx context.Context, logNumber int) ([]*ErrorLogEntry, error)
- func (s *Server) ReadErrorLogSeq(ctx context.Context, logNumber int) iter.Seq2[*ErrorLogEntry, error]
- func (s *Server) Reconfigure(override bool) error
- func (s *Server) ReconfigureContext(ctx context.Context, override bool) error
- func (s *Server) RemoveServerRoleMember(roleName, memberName string) error
- func (s *Server) RemoveServerRoleMemberContext(ctx context.Context, roleName, memberName string) error
- func (s *Server) Restore(opts RestoreOptions) error
- func (s *Server) RestoreContext(ctx context.Context, opts RestoreOptions) error
- func (s *Server) RevokeServerPermission(permission, principal string) error
- func (s *Server) RevokeServerPermissionContext(ctx context.Context, permission, principal string) error
- func (s *Server) RevokeServerPermissionWithOptions(permission, principal string, opts PermissionOptions) error
- func (s *Server) RevokeServerPermissionWithOptionsContext(ctx context.Context, permission, principal string, opts PermissionOptions) error
- func (s *Server) Schedule(name string) *Schedule
- func (s *Server) ScheduleByName(name string) (*Schedule, error)
- func (s *Server) ScheduleByNameContext(ctx context.Context, name string) (*Schedule, error)
- func (s *Server) ScheduleSeq(ctx context.Context) iter.Seq2[*Schedule, error]
- func (s *Server) Schedules() ([]*Schedule, error)
- func (s *Server) SchedulesContext(ctx context.Context) ([]*Schedule, error)
- func (s *Server) SecurityInfo() (*ServerSecurityInfo, error)
- func (s *Server) SecurityInfoContext(ctx context.Context) (*ServerSecurityInfo, error)
- func (s *Server) SendMail(profile, recipients, subject, body string) error
- func (s *Server) SendMailContext(ctx context.Context, profile, recipients, subject, body string) error
- func (s *Server) ServerPermissionSeq(ctx context.Context) iter.Seq2[*ServerPermissionEntry, error]
- func (s *Server) ServerPermissions() ([]*ServerPermissionEntry, error)
- func (s *Server) ServerPermissionsContext(ctx context.Context) ([]*ServerPermissionEntry, error)
- func (s *Server) ServerRoleByName(name string) (*ServerRole, error)
- func (s *Server) ServerRoleByNameContext(ctx context.Context, name string) (*ServerRole, error)
- func (s *Server) ServerRoleMemberSeq(ctx context.Context, roleName string) iter.Seq2[*RoleMember, error]
- func (s *Server) ServerRoleMembers(roleName string) ([]*RoleMember, error)
- func (s *Server) ServerRoleMembersContext(ctx context.Context, roleName string) ([]*RoleMember, error)
- func (s *Server) ServerRoleSeq(ctx context.Context) iter.Seq2[*ServerRole, error]
- func (s *Server) ServerRoles() ([]*ServerRole, error)
- func (s *Server) ServerRolesContext(ctx context.Context) ([]*ServerRole, error)
- func (s *Server) VerifyBackup(device string) error
- func (s *Server) VerifyBackupContext(ctx context.Context, device string) error
- type ServerInfo
- type ServerMemoryStats
- type ServerPermissionEntry
- type ServerRole
- type ServerSecurityInfo
- type ServerVersion
- type SpaceInfo
- type Statistic
- func (st *Statistic) ColumnSeq(ctx context.Context) iter.Seq2[string, error]
- func (st *Statistic) Columns() ([]string, error)
- func (st *Statistic) ColumnsContext(ctx context.Context) ([]string, error)
- func (st *Statistic) DensityVector() ([]*StatisticDensity, error)
- func (st *Statistic) DensityVectorContext(ctx context.Context) ([]*StatisticDensity, error)
- func (st *Statistic) DensityVectorSeq(ctx context.Context) iter.Seq2[*StatisticDensity, error]
- func (st *Statistic) Drop() error
- func (st *Statistic) DropContext(ctx context.Context) error
- func (st *Statistic) Header() (*StatisticHeader, error)
- func (st *Statistic) HeaderContext(ctx context.Context) (*StatisticHeader, error)
- func (st *Statistic) Histogram() ([]*StatisticHistogramStep, error)
- func (st *Statistic) HistogramContext(ctx context.Context) ([]*StatisticHistogramStep, error)
- func (st *Statistic) HistogramSeq(ctx context.Context) iter.Seq2[*StatisticHistogramStep, error]
- func (st *Statistic) Update(samplePct int) error
- func (st *Statistic) UpdateContext(ctx context.Context, samplePct int) error
- type StatisticDensity
- type StatisticHeader
- type StatisticHistogramStep
- type StoredProcedure
- type Synonym
- type Table
- func (t *Table) AlterColumn(col ColumnDefinition) error
- func (t *Table) AlterColumnContext(ctx context.Context, col ColumnDefinition) error
- func (t *Table) CheckConstraintSeq(ctx context.Context) iter.Seq2[*CheckConstraint, error]
- func (t *Table) CheckConstraints() ([]*CheckConstraint, error)
- func (t *Table) CheckConstraintsContext(ctx context.Context) ([]*CheckConstraint, error)
- func (t *Table) CheckWhereSyntax(predicate string) error
- func (t *Table) CheckWhereSyntaxContext(ctx context.Context, predicate string) error
- func (t *Table) ColumnSeq(ctx context.Context) iter.Seq2[*Column, error]
- func (t *Table) Columns() ([]*Column, error)
- func (t *Table) ColumnsContext(ctx context.Context) ([]*Column, error)
- func (t *Table) CountWhere(predicate string) (int64, error)
- func (t *Table) CountWhereContext(ctx context.Context, predicate string) (int64, error)
- func (t *Table) CreateIndex(req CreateIndexRequest) error
- func (t *Table) CreateIndexContext(ctx context.Context, req CreateIndexRequest) error
- func (t *Table) CreateStatistic(name string, columns []string, samplePct int) error
- func (t *Table) CreateStatisticContext(ctx context.Context, name string, columns []string, samplePct int) error
- func (t *Table) DB() *Database
- func (t *Table) Detail() (*TableDetail, error)
- func (t *Table) DetailContext(ctx context.Context) (*TableDetail, error)
- func (t *Table) ForeignKeySeq(ctx context.Context) iter.Seq2[*ForeignKey, error]
- func (t *Table) ForeignKeys() ([]*ForeignKey, error)
- func (t *Table) ForeignKeysContext(ctx context.Context) ([]*ForeignKey, error)
- func (t *Table) FragmentationStats(mode string) ([]*IndexFragmentation, error)
- func (t *Table) FragmentationStatsContext(ctx context.Context, mode string) ([]*IndexFragmentation, error)
- func (t *Table) FragmentationStatsSeq(ctx context.Context, mode string) iter.Seq2[*IndexFragmentation, error]
- func (t *Table) FullName() string
- func (t *Table) IndexSeq(ctx context.Context) iter.Seq2[*Index, error]
- func (t *Table) Indexes() ([]*Index, error)
- func (t *Table) IndexesContext(ctx context.Context) ([]*Index, error)
- func (t *Table) PartitionSeq(ctx context.Context) iter.Seq2[*PartitionInfo, error]
- func (t *Table) Partitions() ([]*PartitionInfo, error)
- func (t *Table) PartitionsContext(ctx context.Context) ([]*PartitionInfo, error)
- func (t *Table) RebuildAllIndexes(fillFactor int) error
- func (t *Table) RebuildAllIndexesContext(ctx context.Context, fillFactor int) error
- func (t *Table) RowCount() (int64, error)
- func (t *Table) RowCountContext(ctx context.Context) (int64, error)
- func (t *Table) SpaceUsed() (*TableSpaceInfo, error)
- func (t *Table) SpaceUsedContext(ctx context.Context) (*TableSpaceInfo, error)
- func (t *Table) StatisticSeq(ctx context.Context) iter.Seq2[*Statistic, error]
- func (t *Table) Statistics() ([]*Statistic, error)
- func (t *Table) StatisticsContext(ctx context.Context) ([]*Statistic, error)
- func (t *Table) TriggerSeq(ctx context.Context) iter.Seq2[*Trigger, error]
- func (t *Table) Triggers() ([]*Trigger, error)
- func (t *Table) TriggersContext(ctx context.Context) ([]*Trigger, error)
- func (t *Table) TruncateTable() error
- func (t *Table) TruncateTableContext(ctx context.Context) error
- func (t *Table) UpdateAllStatistics(samplePct int) error
- func (t *Table) UpdateAllStatisticsContext(ctx context.Context, samplePct int) error
- type TableChangeTracking
- type TableDetail
- type TableSpaceInfo
- type Trigger
- type User
- func (u *User) AddToRole(roleName string) error
- func (u *User) AddToRoleContext(ctx context.Context, roleName string) error
- func (u *User) Deny(permission ObjectPermission, objectSchema, objectName string) error
- func (u *User) DenyContext(ctx context.Context, permission ObjectPermission, ...) error
- func (u *User) Drop() error
- func (u *User) DropContext(ctx context.Context) error
- func (u *User) Grant(permission ObjectPermission, objectSchema, objectName string) error
- func (u *User) GrantContext(ctx context.Context, permission ObjectPermission, ...) error
- func (u *User) RemoveFromRole(roleName string) error
- func (u *User) RemoveFromRoleContext(ctx context.Context, roleName string) error
- func (u *User) Rename(newName string) error
- func (u *User) RenameContext(ctx context.Context, newName string) error
- func (u *User) Revoke(permission ObjectPermission, objectSchema, objectName string) error
- func (u *User) RevokeContext(ctx context.Context, permission ObjectPermission, ...) error
- func (u *User) SetDefaultSchema(schemaName string) error
- func (u *User) SetDefaultSchemaContext(ctx context.Context, schemaName string) error
- func (u *User) SetLogin(loginName string) error
- func (u *User) SetLoginContext(ctx context.Context, loginName string) error
- type UserDefinedFunction
- type View
Constants ¶
const ( WeekdaySunday = 1 WeekdayMonday = 2 WeekdayTuesday = 4 WeekdayWednesday = 8 WeekdayThursday = 16 WeekdayFriday = 32 WeekdaySaturday = 64 )
Weekday bitmask values for a FreqWeekly schedule's FreqInterval.
const ( RelativeDaySunday = 1 RelativeDayMonday = 2 RelativeDayTuesday = 3 RelativeDayWednesday = 4 RelativeDayThursday = 5 RelativeDayFriday = 6 RelativeDaySaturday = 7 RelativeDayDay = 8 RelativeDayWeekday = 9 RelativeDayWeekendDay = 10 )
Single-value day codes for a FreqMonthlyRelative schedule's FreqInterval. Unlike FreqWeekly's bitmask above, these are sequential (1=Sunday through 7=Saturday), not powers of two, plus three special values.
const ( RelativeFirst = 1 RelativeSecond = 2 RelativeThird = 4 RelativeFourth = 8 RelativeLast = 16 )
FreqRelativeInterval values for a FreqMonthlyRelative schedule.
Variables ¶
This section is empty.
Functions ¶
func BuildBackupStatement ¶ added in v0.0.4
func BuildBackupStatement(opts BackupOptions) (string, error)
BuildBackupStatement returns the T-SQL BACKUP statement opts describes, without executing it — for callers that want to show or hand off the script (e.g. an editor pane) rather than run it immediately. BackupContext validates and builds the statement the same way, then runs what this returns.
func BuildRestoreStatement ¶ added in v0.0.5
func BuildRestoreStatement(opts RestoreOptions) (string, error)
BuildRestoreStatement returns the T-SQL RESTORE statement opts describes, without executing it — the RESTORE counterpart of BuildBackupStatement. RestoreContext validates and builds the statement the same way, then runs what this returns.
func ColumnPermissionNames ¶ added in v0.0.8
func ColumnPermissionNames() []string
ColumnPermissionNames returns every permission name GRANT/DENY/REVOKE accepts on a column, sorted — the catalog a column-permissions grid enumerates, the way ObjectPermissionNames is the catalog for the whole object.
func ColumnTypeString ¶ added in v0.0.5
ColumnTypeString returns the T-SQL data-type fragment for a Column read from sys.columns. nchar/nvarchar store max_length in bytes (2 per character).
func DatabasePermissionNames ¶ added in v0.0.5
func DatabasePermissionNames() []string
DatabasePermissionNames returns every database-scoped permission name GRANT/DENY/REVOKE accepts, sorted — see ServerPermissionNames for what it's used for.
func IsRetryable ¶ added in v0.0.4
IsRetryable reports whether err represents a transient failure worth retrying — the driver's RetryableError; a dropped pooled connection (driver.ErrBadConn), including when wrapped; or one of the raw connection-level failures the driver itself uses to flag a connection dead (see mssql.Conn.checkBadConn): a network error, a corrupted TDS byte stream (mssql.StreamError), a fatal server-side error that severs the connection (mssql.ServerError), or io.EOF. Those last few surface unwrapped rather than as RetryableError whenever the driver decided retrying the exact in-flight call wasn't safe (its own mayRetry=false) — that restriction is about automatically retrying the *same* call, not about whether the connection itself is salvageable, so a caller retrying its own idempotent operation on a fresh connection is still safe to do so. It is exported so callers that run their own statements (e.g. an ad-hoc query runner) can decide whether a failure is worth another attempt; note that only idempotent operations are safe to retry blindly.
A context error is never retryable. context.DeadlineExceeded has to be rejected explicitly because it implements net.Error, so the net.Error test below would otherwise report a caller's own expired deadline as a transient failure and have them wait out three attempts on a deadline that has already passed. context.Canceled fails that test anyway and is named alongside it so the two can't drift apart.
func ObjectPermissionNames ¶ added in v0.0.5
func ObjectPermissionNames() []string
ObjectPermissionNames returns every object-scoped permission name GRANT/DENY/REVOKE accepts on a table or view, sorted — see ServerPermissionNames for what it's used for.
func ParseServerAddress ¶ added in v0.0.4
ParseServerAddress splits a user-supplied server address into its host, named-instance, and port components, accepting every form SSMS itself accepts in its "Server name" field:
host host:port host,port host\instance host\instance,port
Exported so callers (e.g. a UI layer building its own address/DSN preview, or resolving a separate "port" field against a Server string that may already carry its own) can reuse the same parsing buildDSN relies on, instead of duplicating it.
A malformed trailing port (non-numeric) is left as part of host rather than rejected outright — the caller surfaces connection failures via the driver's own error, not a separate parse error here.
func QuoteLiteral ¶ added in v0.0.4
QuoteLiteral renders s as a T-SQL string literal, including the surrounding single quotes and doubling any embedded quote — safe to embed in SQL text where a parameter placeholder is not accepted (DDL, dynamic SQL). Prefer a query parameter for ordinary values.
Use QuoteLiteral where the whole literal is being produced. Where the quotes are already part of a format string — the common shape in this package, e.g. "@name = N'%s'" — use the unexported escapeSingle (helpers.go) instead, which escapes without adding quotes of its own. QuoteLiteral also does not emit the N prefix.
Neither one quotes an *identifier*. An identifier that ends up inside a string literal — the argument to OBJECT_ID, DBCC SHOW_STATISTICS, fn_listextendedproperty, and similar — needs QuoteName/qualifiedName applied first and escapeSingle on top of that:
escapeSingle(qualifiedName(schema, name)) // -> [dbo].[Sales.Archive] escapeSingle(t.FullName()) // same, for a *Table
Skipping the bracket-quoting is not cosmetic. A name containing '.' then parses as a multi-part name and resolves to the wrong object or to NULL, and a NULL object_id means "every object in the database" to sys.dm_db_index_physical_stats — so the wrong form returns plausible stats for the wrong tables instead of failing. See identifier_quoting_test.go, which pins all of this.
func QuoteName ¶ added in v0.0.4
QuoteName wraps a SQL Server identifier (schema, table, column, ...) in square brackets, doubling any embedded closing bracket — the equivalent of T-SQL's QUOTENAME(). Use it to build object names safely; note it quotes the whole string as one identifier, so pass each part of a multi-part name separately.
func SchemaPermissionNames ¶ added in v0.0.5
func SchemaPermissionNames() []string
SchemaPermissionNames returns every schema-scoped permission name GRANT/DENY/REVOKE accepts ON SCHEMA::x, sorted — see ObjectPermissionNames for what it's used for.
func Scripting ¶ added in v0.0.7
Scripting reports whether ctx came from WithScript — that is, whether write methods invoked with it record their statement instead of running it.
A caller that mirrors a write into its own state needs to know: under WithScript a write returns success without the server ever seeing it, so state derived from "it worked" is wrong. The case this exists for is a rename — an editor that renames an object and then re-reads it by the new name finds nothing, because the old name is still what the server has. Reads are unaffected by WithScript and go to the real server either way.
func ServerPermissionNames ¶ added in v0.0.5
func ServerPermissionNames() []string
ServerPermissionNames returns every server-scoped permission name GRANT/DENY/REVOKE accepts, sorted — the catalog SSMS's Server Properties > Permissions page enumerates for a principal regardless of whether it already has an explicit GRANT/DENY entry.
Types ¶
type ActiveSession ¶
type ActiveSession struct {
SessionID int
LoginName string
HostName string
ProgramName string
DatabaseName string
Status string
CPUTime int64
MemoryUsage int64
TotalElapsedMS int64
LastRequestStart string
CommandText string
BlockingSessionID int
WaitType string
WaitTimeMS int64
}
ActiveSession holds information about one session from sys.dm_exec_sessions.
type AgentStatus ¶ added in v0.0.6
type AgentStatus struct {
Running bool
StatusText string
// LastStartupTime is the zero Time if the DMV has no matching row (the
// Agent service isn't registered under this instance, or the DMV isn't
// queryable in this edition/deployment).
LastStartupTime time.Time
}
AgentStatus reports whether SQL Server Agent is currently running, based only on SQL-visible state (sys.dm_server_services) — no Windows Service Control, WMI, or registry access, matching the SQL-only scope of the rest of this file.
type Alert ¶ added in v0.0.6
type Alert struct {
ID int
Name string
Enabled bool
// EventSource is "MSSQLSERVER" for a plain SQL Server event alert, or
// "WMI" for a WMI alert — see IsEventAlert.
EventSource string
// ErrorNumber is sysalerts.message_id — mutually exclusive in practice
// with Severity (SQL Server Agent triggers on whichever is nonzero).
ErrorNumber int
Severity int
DatabaseName string
DelayBetweenResponses time.Duration
NotificationMessage string
// IncludeEventDescriptionIn is sysalerts.include_event_description —
// msdb's own bitmask for which notification channel(s) get the event
// description text appended (0=None, 1=Email, 2=Pager, 4=NetSend,
// 7=All). Named "...In" after sp_add_alert/sp_update_alert's
// @include_event_description_in parameter; the column itself has no
// "_in" suffix, the two names genuinely diverge.
IncludeEventDescriptionIn int
EventDescriptionKeyword string
Category string
// JobName is the job executed in response to this alert, or "" if none.
JobName string
PerformanceCondition string
OccurrenceCount int
LastOccurrence time.Time
LastResponse time.Time
// contains filtered or unexported fields
}
Alert represents a SQL Server Agent alert (msdb.dbo.sysalerts).
func (*Alert) DisableContext ¶ added in v0.0.6
DisableContext is the context-aware variant of Disable.
func (*Alert) DropContext ¶ added in v0.0.6
DropContext is the context-aware variant of Drop.
func (*Alert) EnableContext ¶ added in v0.0.6
EnableContext is the context-aware variant of Enable.
func (*Alert) IsEventAlert ¶ added in v0.0.6
IsEventAlert reports whether this is a plain SQL Server event alert (an error-number-or-severity trigger) rather than a WMI alert or a performance-condition alert — the SQL-only-implementable subset of SQL Server Agent alerts (no WMI provider, no performance counter access). See Server.EventAlerts. Only EventSource and PerformanceCondition are checked — sysalerts.wmi_query/wmi_namespace, WMI's own supplementary columns, don't exist on every build (they're absent on SQL Server on Linux, where WMI doesn't apply at all), so gosmo doesn't select them; event_source = 'WMI' is the reliable, always-present discriminator SQL Server itself sets for a WMI alert.
func (*Alert) NotificationSeq ¶ added in v0.0.6
NotificationSeq returns an iterator over every operator notified by this alert.
func (*Alert) Notifications ¶ added in v0.0.6
func (a *Alert) Notifications() ([]*AlertNotification, error)
Notifications returns every operator notified by this alert.
func (*Alert) NotificationsContext ¶ added in v0.0.6
func (a *Alert) NotificationsContext(ctx context.Context) ([]*AlertNotification, error)
NotificationsContext is the context-aware variant of Notifications.
func (*Alert) Notify ¶ added in v0.0.6
func (a *Alert) Notify(operatorName string, method NotificationMethod) error
Notify configures the alert to notify an operator via sp_add_notification.
func (*Alert) NotifyContext ¶ added in v0.0.6
func (a *Alert) NotifyContext(ctx context.Context, operatorName string, method NotificationMethod) error
NotifyContext is the context-aware variant of Notify.
func (*Alert) RemoveNotify ¶ added in v0.0.6
RemoveNotify removes an operator's notification link from the alert.
func (*Alert) RemoveNotifyContext ¶ added in v0.0.6
RemoveNotifyContext is the context-aware variant of RemoveNotify.
func (*Alert) RenameContext ¶ added in v0.0.6
RenameContext is the context-aware variant of Rename.
func (*Alert) SetCategory ¶ added in v0.0.6
SetCategory reassigns the alert's category. category == "" clears it — sent as the real [Uncategorized] category, since sp_update_alert rejects an empty name outright ("The specified @category_name (”) does not exist") and [Uncategorized] is what an alert created with no category actually holds in msdb.dbo.syscategories.
func (*Alert) SetCategoryContext ¶ added in v0.0.6
SetCategoryContext is the context-aware variant of SetCategory.
func (*Alert) SetDatabase ¶ added in v0.0.6
SetDatabase scopes the alert to a single database, or "" for all databases.
func (*Alert) SetDatabaseContext ¶ added in v0.0.6
SetDatabaseContext is the context-aware variant of SetDatabase.
func (*Alert) SetDelay ¶ added in v0.0.6
SetDelay sets the minimum delay between repeated responses to the alert.
func (*Alert) SetDelayContext ¶ added in v0.0.6
SetDelayContext is the context-aware variant of SetDelay.
func (*Alert) SetJobResponse ¶ added in v0.0.6
SetJobResponse sets the job executed in response to this alert, or "" to clear it.
func (*Alert) SetJobResponseContext ¶ added in v0.0.6
SetJobResponseContext is the context-aware variant of SetJobResponse.
func (*Alert) SetNotificationMessage ¶ added in v0.0.6
SetNotificationMessage sets the extra text appended to the alert's notification.
func (*Alert) SetNotificationMessageContext ¶ added in v0.0.6
SetNotificationMessageContext is the context-aware variant of SetNotificationMessage.
func (*Alert) SetTrigger ¶ added in v0.0.6
SetTrigger sets what raises the alert: a specific SQL Server error number, or a severity level. SQL Server treats these as mutually exclusive — pass 0 for whichever one isn't in use.
type AlertNotification ¶ added in v0.0.6
type AlertNotification struct {
OperatorName string
Method NotificationMethod
}
AlertNotification describes one operator notified by an alert.
type AlertNotificationRef ¶ added in v0.0.6
type AlertNotificationRef struct {
AlertName string
Method NotificationMethod
}
AlertNotificationRef describes one alert configured to notify an operator.
type AuthMethod ¶
type AuthMethod int
AuthMethod selects the authentication strategy for Connect().
const ( // AuthSQLServer uses a SQL Server login and password. // Set ConnectionOptions.User and ConnectionOptions.Password. AuthSQLServer AuthMethod = iota // AuthWindows uses the Windows/Active Directory identity (on-premises, // domain-joined host). On Windows it uses native SSPI. On every other // platform it authenticates via Kerberos: with no credentials it uses the // ambient kinit credential cache (single sign-on); set ConnectionOptions. // Kerberos for a keytab, an explicit realm, or a non-default krb5.conf, // or set User+Password for a username/password Kerberos login. AuthWindows // AuthEntraDefault uses DefaultAzureCredential (env vars -> MSI -> AzCLI). // Ideal for code that must work both locally and in Azure without changes. AuthEntraDefault // AuthEntraPassword uses an Entra user UPN + password. // Set ConnectionOptions.User (UPN) and ConnectionOptions.Password. AuthEntraPassword // AuthEntraMSI uses a system-assigned Managed Identity. // Set ConnectionOptions.ClientID to select a user-assigned identity. AuthEntraMSI // AuthEntraServicePrincipal uses an app registration client-secret or cert. // Set ConnectionOptions.User to the application (client) ID, // ConnectionOptions.TenantID, and either: // - ConnectionOptions.Password (client secret), or // - ConnectionOptions.ClientCertPath + optionally ClientCertPassword (cert). AuthEntraServicePrincipal // AuthEntraServicePrincipalAccessToken presents a pre-acquired bearer token. // Set ConnectionOptions.AccessToken. AuthEntraServicePrincipalAccessToken // AuthEntraIntegrated uses Windows SSO federated with Entra (on-premises AD // joined to Azure AD). No credentials needed. AuthEntraIntegrated // AuthEntraInteractive opens a browser for interactive sign-in (human only). // Set ConnectionOptions.ApplicationClientID if required by the tenant. AuthEntraInteractive // AuthEntraDeviceCode prints a device code for human sign-in on another device. AuthEntraDeviceCode // AuthEntraAzCLI uses the credential from "az login". AuthEntraAzCLI // AuthEntraAzureDeveloperCLI uses the credential from "azd auth login". AuthEntraAzureDeveloperCLI // AuthEntraAzurePipelines uses Azure DevOps OIDC federated credentials. // Requires SYSTEM_ACCESSTOKEN and SYSTEM_OIDCREQUESTURI env vars. AuthEntraAzurePipelines // AuthEntraOnBehalfOf uses the OAuth 2.0 on-behalf-of flow. // Set ConnectionOptions.AccessToken to the inbound user assertion. AuthEntraOnBehalfOf )
type BackupAction ¶
type BackupAction string
BackupAction mirrors SQL Server backup types.
const ( BackupActionDatabase BackupAction = "DATABASE" BackupActionLog BackupAction = "LOG" BackupActionFiles BackupAction = "FILES" BackupActionDifferential BackupAction = "DATABASE_DIFFERENTIAL" )
type BackupFile ¶ added in v0.0.5
type BackupFile struct {
LogicalName string
PhysicalName string
Type string // "D" data, "L" log, "F" full-text, "S" FILESTREAM
FileGroupName string
Size int64 // bytes
MaxSize int64 // bytes
}
BackupFile describes one database file inside a backup set, as reported by RESTORE FILELISTONLY.
type BackupHeader ¶ added in v0.0.5
type BackupHeader struct {
BackupName string
Description string
BackupType BackupAction
Position int
DatabaseName string
ServerName string
BackupStart time.Time
BackupFinish time.Time
BackupSize int64 // bytes
CompressedSize int64 // bytes; equals BackupSize when not compressed
Compressed bool
HasChecksums bool
IsCopyOnly bool
DatabaseVersion int
CompatibilityLevel CompatibilityLevel
SoftwareVersionMajor int
RecoveryModel string
}
BackupHeader describes one backup set on a backup device, as reported by RESTORE HEADERONLY.
type BackupInfo ¶
type BackupInfo struct {
DatabaseName string
BackupSetName string
Description string
BackupType BackupAction
BackupStart time.Time
BackupFinish time.Time
BackupSize int64
DeviceName string
UserName string
ServerName string
DatabaseVersion int
CompatibilityLevel CompatibilityLevel
}
BackupInfo holds metadata about a specific database backup.
type BackupOptions ¶
type BackupOptions struct {
// Database to back up (required).
Database string
// Action: DATABASE (default), LOG, or FILES.
Action BackupAction
// Files and FileGroups name the logical files / filegroups a
// BackupActionFiles backup covers. At least one of the two is required
// for that action and both are ignored for every other one — there is no
// "BACKUP FILES" verb in T-SQL; a file/filegroup backup is a BACKUP
// DATABASE carrying FILE = / FILEGROUP = clauses.
Files []string
FileGroups []string
// Devices is one or more backup device paths, e.g. `C:\Backups\MyDB.bak`.
Devices []string
// BackupSetName is the NAME clause.
BackupSetName string
// Description is the DESCRIPTION clause.
Description string
// MediaDescription is the MEDIADESCRIPTION clause.
MediaDescription string
// Compression: nil = server default, new(true) = force on, new(false) = force off.
Compression *bool
// CopyOnly marks this as a copy-only backup (does not break the log chain).
CopyOnly bool
// Checksum adds WITH CHECKSUM.
Checksum bool
// Format reinitialises the media.
Format bool
// Init overwrites existing backup sets on the media.
Init bool
// Stats controls progress reporting frequency (e.g. 10 = every 10%).
// If Progress is set and Stats is left at 0, it defaults to 10 so
// percent-complete messages actually get emitted.
Stats int
// Progress, if set, is called for every message SQL Server emits while
// the backup runs, including the "N percent processed" notices STATS
// produces — pct is -1 for a message that doesn't carry a percentage.
Progress func(pct int, message string)
}
BackupOptions configures a BACKUP DATABASE or BACKUP LOG operation.
type BulkCopy ¶ added in v0.0.4
type BulkCopy struct {
// Schema is the destination schema; empty defaults to "dbo".
Schema string
// Table is the destination table name (unquoted).
Table string
// Columns are the destination columns, in the order each row supplies
// its values. Required.
Columns []string
// Options tunes the load; the zero value is fine.
Options BulkOptions
}
BulkCopy describes the destination of a bulk-insert load.
type BulkOptions ¶ added in v0.0.4
type BulkOptions struct {
// CheckConstraints enforces CHECK and FOREIGN KEY constraints on the
// incoming rows. Off by default (as with bcp), which is faster but can
// admit rows a normal INSERT would reject.
CheckConstraints bool
// FireTriggers fires AFTER INSERT triggers on the destination table.
// Off by default, so triggers do not run during the load.
FireTriggers bool
// KeepNulls keeps NULLs supplied by the source instead of substituting
// the destination column's DEFAULT.
KeepNulls bool
// TableLock takes a bulk-update (BU) lock on the table for the duration
// of the load rather than acquiring row/page locks — faster for a
// dedicated import.
TableLock bool
// RowsPerBatch hints the number of rows per batch sent to the server.
// Zero lets the server decide.
RowsPerBatch int
// KilobytesPerBatch hints the batch size in kilobytes. Zero lets the
// server decide.
KilobytesPerBatch int
// Order names the columns the source rows are already sorted by (each
// entry a column optionally followed by " ASC"/" DESC"). When it matches
// the destination's clustered index the server can skip an internal sort.
Order []string
}
BulkOptions tunes a bulk-copy load, mirroring the WITH options of T-SQL's INSERT BULK. The zero value performs a plain load with server defaults.
type Catalog ¶ added in v0.0.5
type Catalog struct {
Schemas []string
Objects []CatalogObject
}
Catalog is a bulk snapshot of every user table and view in a database, each with its columns already loaded — see Database.Catalog.
type CatalogColumn ¶ added in v0.0.5
type CatalogColumn struct {
Name string
DataType DataType
MaxLength int
Precision int
Scale int
IsNullable bool
}
CatalogColumn is one column of a CatalogObject — the subset of Column's fields relevant to identifying and describing a column, without the per-table detail (identity, computed, default, rowguid) that a bulk snapshot has no need for.
type CatalogObject ¶ added in v0.0.5
type CatalogObject struct {
ObjectID int
Schema string
Name string
Type CatalogObjectType
Columns []CatalogColumn
}
CatalogObject is one table or view and its columns, in ordinal order.
type CatalogObjectType ¶ added in v0.0.5
type CatalogObjectType int
CatalogObjectType distinguishes a Catalog entry's underlying object kind.
const ( CatalogTable CatalogObjectType = iota CatalogView )
type Category ¶ added in v0.0.6
type Category struct {
ID int
Class CategoryClass
Name string
}
Category represents a SQL Server Agent job, alert, or operator category (msdb.dbo.syscategories) — Class says which.
type CategoryClass ¶ added in v0.0.6
type CategoryClass string
CategoryClass is the msdb.dbo.syscategories.category_class value a Category belongs to — also the literal sp_add_category/sp_delete_category @class parameter.
const ( CategoryClassJob CategoryClass = "JOB" CategoryClassAlert CategoryClass = "ALERT" CategoryClassOperator CategoryClass = "OPERATOR" )
type ChangeTrackingInfo ¶ added in v0.0.4
type ChangeTrackingInfo struct {
Enabled bool
AutoCleanup bool
RetentionPeriod int
RetentionUnit string // e.g. "DAYS", "HOURS", "MINUTES"
}
ChangeTrackingInfo holds database-level change tracking settings.
type CheckConstraint ¶
type CheckConstraint struct {
Name string
Definition string
IsDisabled bool
Column string // empty for table-level checks
}
CheckConstraint represents a CHECK constraint.
type Column ¶
type Column struct {
Name string
OrdinalPosition int
DataType DataType
MaxLength int // -1 = MAX
Precision int
Scale int
IsNullable bool
IsIdentity bool
IdentitySeed int64
IdentityIncrement int64
IsComputed bool
ComputedText string
DefaultValue *ColumnDefault
IsRowGUID bool
Collation string
IsPrimaryKey bool
}
Column mirrors Microsoft.SqlServer.Management.Smo.Column.
type ColumnDefault ¶
ColumnDefault represents a column default constraint.
type ColumnDefinition ¶
type ColumnDefinition struct {
Name string
DataType DataType
MaxLength int // char/varchar/nchar/nvarchar: 0 = omit, -1 = MAX
Precision int // decimal/numeric
Scale int // decimal/numeric / datetime2 / time
IsNullable bool
IsIdentity bool
IdentitySeed int64
IdentityIncr int64
DefaultValue string // expression, e.g. "sysdatetime()" or "0"
IsPrimaryKey bool
}
ColumnDefinition describes a column in a CREATE TABLE statement.
type ColumnEncryptionKey ¶
type ColumnEncryptionKey struct {
Name string
ID int
MasterKeyName string
EncryptionAlgorithm string
// contains filtered or unexported fields
}
ColumnEncryptionKey mirrors sys.column_encryption_keys.
func (*ColumnEncryptionKey) Drop ¶
func (cek *ColumnEncryptionKey) Drop() error
Drop drops the column encryption key.
func (*ColumnEncryptionKey) DropContext ¶ added in v0.0.5
func (cek *ColumnEncryptionKey) DropContext(ctx context.Context) error
DropContext is the context-aware variant of Drop.
type ColumnMasterKey ¶
type ColumnMasterKey struct {
Name string
ID int
KeyStoreProviderName string
KeyPath string
AllowEnclaveComputations bool
// contains filtered or unexported fields
}
ColumnMasterKey mirrors sys.column_master_keys.
func (*ColumnMasterKey) Drop ¶
func (cmk *ColumnMasterKey) Drop() error
Drop drops the column master key.
func (*ColumnMasterKey) DropContext ¶ added in v0.0.5
func (cmk *ColumnMasterKey) DropContext(ctx context.Context) error
DropContext is the context-aware variant of Drop.
type ColumnPermissionEntry ¶ added in v0.0.8
type ColumnPermissionEntry struct {
Principal string
PrincipalType string // e.g. "DATABASE_ROLE", "SQL_USER"
Grantor string
Schema string
Object string
// ObjectType is what the column's parent is — "TABLE" or "VIEW", the
// same values PrincipalSecurable.SecurableType uses, so a caller can key
// both against one securable identity. Both types carry column
// permissions and sys.database_permissions records them identically, so
// without this a view's grants get mistaken for a table's.
ObjectType string
Column string
Permission ObjectPermission
State PermissionState // "GRANT", "GRANT_WITH_GRANT_OPTION", "DENY"
}
ColumnPermissionEntry is one GRANT/DENY entry recorded on a single column of a table or view — what sys.database_permissions stores as an OBJECT_OR_COLUMN row with a non-zero minor_id. Object-level entries (minor_id 0) are reported by Permissions instead, and the two are genuinely separate grants: a column DENY overrides an object GRANT.
type CompatibilityLevel ¶
type CompatibilityLevel int
CompatibilityLevel mirrors SQL Server database compatibility levels.
const ( CompatLevel2008 CompatibilityLevel = 100 CompatLevel2012 CompatibilityLevel = 110 CompatLevel2014 CompatibilityLevel = 120 CompatLevel2016 CompatibilityLevel = 130 CompatLevel2017 CompatibilityLevel = 140 CompatLevel2019 CompatibilityLevel = 150 CompatLevel2022 CompatibilityLevel = 160 CompatLevel2025 CompatibilityLevel = 170 )
type ConfigurationOption ¶
type ConfigurationOption struct {
ConfigID int
Name string
Value int64
ValueInUse int64
Minimum int64
Maximum int64
IsDynamic bool // true = change takes effect without a restart
IsAdvanced bool
Description string
// contains filtered or unexported fields
}
ConfigurationOption mirrors a row from sys.configurations.
func (*ConfigurationOption) SetValue ¶
func (c *ConfigurationOption) SetValue(value int64) error
SetValue changes the option value using sp_configure. For non-dynamic options, call Server.Reconfigure() afterwards.
func (*ConfigurationOption) SetValueContext ¶
func (c *ConfigurationOption) SetValueContext(ctx context.Context, value int64) error
SetValueContext is the context-aware variant of SetValue.
type ConnectionOptions ¶
type ConnectionOptions struct {
// Server is the host[:port] or host\instance, e.g. "localhost:1433" or
// "myserver.database.windows.net". Required.
Server string
// Database to connect to initially. Defaults to "master".
Database string
// Auth selects the authentication strategy. Defaults to AuthSQLServer.
Auth AuthMethod
// User is the SQL Server login, Windows UPN, or Entra app client ID,
// depending on the Auth method chosen.
User string
// Password is the SQL Server password, Entra user password, or client secret.
Password string
// TenantID is the Entra tenant (directory) ID. Required for service principal
// methods when the tenant differs from the server tenant.
TenantID string
// ClientID selects a user-assigned Managed Identity when Auth=AuthEntraMSI.
ClientID string
// ClientCertPath is the path to a PEM/PFX certificate for
// Auth=AuthEntraServicePrincipal certificate-based auth.
ClientCertPath string
// ClientCertPassword is the private-key password for ClientCertPath.
ClientCertPassword string
// AccessToken is a pre-acquired bearer token for
// Auth=AuthEntraServicePrincipalAccessToken or AuthEntraOnBehalfOf.
// It is embedded once at connect time; prefer AccessTokenProvider when
// the token can expire during the connection's lifetime.
AccessToken string
// AccessTokenProvider, when set, is called to obtain a bearer token for
// each new pooled connection, so tokens that expire (e.g. Entra tokens,
// good for ~1 hour) are refreshed automatically rather than embedded
// once and going stale. It takes precedence over AccessToken and Auth:
// the token is presented directly to SQL Server, bypassing the fedauth
// DSN machinery, so it works for any scenario where the caller mints
// its own tokens. The error it returns aborts the connection attempt.
AccessTokenProvider func(ctx context.Context) (string, error)
// ApplicationClientID is the AAD enterprise application client ID registered
// by the tenant admin to allow interactive / device-code flows.
ApplicationClientID string
// ServerSPN overrides the Kerberos service principal name of the target
// instance (e.g. "MSSQLSvc/host.contoso.com:1433"). Used only with
// AuthWindows. Leave empty to let the driver derive it from the address,
// which is correct for most host:port connections.
ServerSPN string
// Kerberos configures Active Directory authentication for AuthWindows.
// It matters mainly on non-Windows hosts, where AuthWindows authenticates
// via Kerberos rather than native SSPI; see KerberosOptions. The zero
// value uses the host's ambient Kerberos setup (krb5.conf + kinit cache).
Kerberos KerberosOptions
// Encrypt controls the encryption mode.
// "" - driver default (true for Azure endpoints, false otherwise)
// "true" - always encrypt
// "false" - no encryption
// "disable" - no encryption (legacy alias)
// "strict" - TDS 8.0 strict encryption
Encrypt string
// TrustServerCertificate disables TLS certificate validation.
// Handy for dev/local instances; do not use in production.
TrustServerCertificate bool
// HostNameInCertificate overrides the expected server name in the TLS cert.
// Useful when connecting via IP address or when the cert CN differs.
HostNameInCertificate string
// DisableInstanceDiscovery disables OIDC instance discovery.
// Set true only for disconnected or private clouds (e.g. Azure Stack).
DisableInstanceDiscovery bool
// SendCertificateChain controls whether the full certificate chain is sent
// in token requests (needed for Subject Name/Issuer SNI auth).
SendCertificateChain bool
// TokenFilePath is the path to the Kubernetes service account token file
// for Auth=AuthEntraMSI (Workload Identity).
TokenFilePath string
// ConnectTimeout is the maximum time to wait for the initial connection.
// Defaults to 30s when zero.
ConnectTimeout time.Duration
// ApplicationName is shown in sys.dm_exec_sessions.program_name.
// Defaults to "gosmo".
ApplicationName string
// MaxOpenConns is the maximum number of open connections in the pool.
// 0 means unlimited.
MaxOpenConns int
// MaxIdleConns is the maximum number of idle connections kept in the pool.
// Defaults to 2.
MaxIdleConns int
// ConnMaxLifetime is the maximum lifetime of a pooled connection.
// 0 means unlimited.
ConnMaxLifetime time.Duration
// ConnMaxIdleTime is the maximum time a pooled connection may sit idle
// before it's closed and evicted rather than handed out again. This is
// what guards against a connection silently dropped while idle — a
// firewall/NAT idle timeout, a load balancer, or the server itself
// closing a long-idle session — sitting in the pool looking usable
// until something actually tries it and fails. Defaults to 5 minutes
// when zero.
ConnMaxIdleTime time.Duration
// SessionInitSQL is T-SQL executed on every pooled connection right
// after it is reset, before the first query runs on it. Use it to apply
// SET options that must hold for the whole session (the equivalent of
// SSMS's Query Execution options), e.g. "SET ARITHABORT ON; SET
// ANSI_NULLS ON". Leave empty for driver defaults.
SessionInitSQL string
}
ConnectionOptions holds every parameter needed to open a connection.
Authentication quick guide:
SQL Server login:
Auth: AuthSQLServer, User: "sa", Password: "..."
Windows / Kerberos (on-premises, domain-joined host):
Auth: AuthWindows (no User/Password needed)
On Linux/macOS this uses Kerberos; run "kinit" first for single sign-on, or set the Kerberos field for a keytab, realm, or custom krb5.conf.
Azure Managed Identity (system-assigned):
Auth: AuthEntraMSI, Server: "myserver.database.windows.net"
Azure Managed Identity (user-assigned):
Auth: AuthEntraMSI, ClientID: "<managed-identity-client-id>"
Service Principal (client secret):
Auth: AuthEntraServicePrincipal User: "<app-client-id>[@<tenant-id>]", Password: "<client-secret>" TenantID: "<tenant-id>"
Service Principal (certificate):
Auth: AuthEntraServicePrincipal User: "<app-client-id>[@<tenant-id>]", ClientCertPath: "/path/to/cert.pem"
Default credential chain (env vars -> MSI -> AzCLI):
Auth: AuthEntraDefault
Azure CLI credential (az login):
Auth: AuthEntraAzCLI
type CreateAlertRequest ¶ added in v0.0.6
type CreateAlertRequest struct {
Name string
Enabled bool
// ErrorNumber and Severity are mutually exclusive triggers — leave
// whichever isn't in use at 0.
ErrorNumber int
Severity int
DatabaseName string
DelayBetweenResponses time.Duration
NotificationMessage string
IncludeEventDescriptionIn int
Category string
}
CreateAlertRequest describes a new SQL Server event alert.
type CreateDatabaseOptions ¶
type CreateDatabaseOptions struct {
Collation string
RecoveryModel RecoveryModel
CompatLevel CompatibilityLevel
// PrimaryFile and LogFile customize the database's initial data and
// log file (name, path, size, growth, max size) via CREATE DATABASE's
// ON PRIMARY/LOG ON clauses. Leaving either nil lets the server place
// that file at its own default path/size, exactly like CreateDatabase
// with a zero-valued CreateDatabaseOptions always has. FileGroup is
// ignored on both (PrimaryFile is always PRIMARY; LogFile has none) —
// additional filegroups and files are added after creation via
// AddFileGroupContext/AddFileContext, not here.
PrimaryFile *DatabaseFileSpec
LogFile *DatabaseFileSpec
}
CreateDatabaseOptions holds optional parameters for CreateDatabase.
type CreateIndexRequest ¶
type CreateIndexRequest struct {
Name string
Type IndexType
IsUnique bool
KeyColumns []IndexColumnDef
IncludedColumns []string
FilterDefinition string
FillFactor int
Online bool
SortInTempDB bool
}
CreateIndexRequest describes a new index to create.
type CreateJobRequest ¶
type CreateJobRequest struct {
Name string
Description string
// Category defaults to [Uncategorized (Local)] when empty.
Category string
OwnerLogin string
Enabled bool
}
CreateJobRequest describes a new SQL Server Agent job.
type CreateLoginOptions ¶
CreateLoginOptions holds optional parameters for CreateLogin.
type CreateOperatorRequest ¶ added in v0.0.6
CreateOperatorRequest describes a new SQL Server Agent operator.
type CreatePartitionFunctionRequest ¶
type CreatePartitionFunctionRequest struct {
Name string
InputType DataType
IsRight bool
Boundaries []string // literal boundary values, e.g. {"100","200","300"}
}
CreatePartitionFunctionRequest describes a partition function to create.
type CreateScheduleRequest ¶ added in v0.0.6
type CreateScheduleRequest struct {
Name string
Enabled bool
FreqType ScheduleFreqType
FreqInterval int
FreqSubdayType ScheduleSubdayType
FreqSubdayInterval int
FreqRelativeInterval int
FreqRecurrenceFactor int
// ActiveStartDate defaults to today if the zero Time.
ActiveStartDate time.Time
// ActiveEndDate means "no end date" if the zero Time.
ActiveEndDate time.Time
// ActiveStartTime and ActiveEndTime are HHMMSS integers.
ActiveStartTime int
ActiveEndTime int
OwnerLoginName string
}
CreateScheduleRequest describes a new shared schedule.
type CreateSequenceRequest ¶
type CreateSequenceRequest struct {
Schema string
Name string
DataType DataType // defaults to bigint
StartValue int64
Increment int64
MinValue *int64
MaxValue *int64
Cycle bool
Cache *int // nil = no cache; 0 = NO CACHE; >0 = cache size
}
CreateSequenceRequest describes a new sequence.
type CreateTableRequest ¶
type CreateTableRequest struct {
Schema string
Name string
Columns []ColumnDefinition
}
CreateTableRequest describes a table to be created.
type Credential ¶ added in v0.0.4
Credential mirrors a row from sys.credentials — used to populate a Login's "Map to credential" dropdown.
type DataType ¶
type DataType string
DataType mirrors SQL Server column data types.
const ( DataTypeBigInt DataType = "bigint" DataTypeBinary DataType = "binary" DataTypeBit DataType = "bit" DataTypeChar DataType = "char" DataTypeDate DataType = "date" DataTypeDatetime DataType = "datetime" DataTypeDatetime2 DataType = "datetime2" DataTypeDatetimeOffset DataType = "datetimeoffset" DataTypeDecimal DataType = "decimal" DataTypeFloat DataType = "float" DataTypeGeography DataType = "geography" DataTypeGeometry DataType = "geometry" DataTypeHierarchyID DataType = "hierarchyid" DataTypeImage DataType = "image" DataTypeInt DataType = "int" DataTypeMoney DataType = "money" DataTypeNChar DataType = "nchar" DataTypeNText DataType = "ntext" DataTypeNumeric DataType = "numeric" DataTypeNVarChar DataType = "nvarchar" DataTypeReal DataType = "real" DataTypeRowVersion DataType = "rowversion" DataTypeSmallDatetime DataType = "smalldatetime" DataTypeSmallInt DataType = "smallint" DataTypeSmallMoney DataType = "smallmoney" DataTypeSQLVariant DataType = "sql_variant" DataTypeText DataType = "text" DataTypeTime DataType = "time" DataTypeTinyInt DataType = "tinyint" DataTypeUniqueIdentifier DataType = "uniqueidentifier" DataTypeVarBinary DataType = "varbinary" DataTypeVarChar DataType = "varchar" DataTypeXML DataType = "xml" )
type Database ¶
type Database struct {
// contains filtered or unexported fields
}
Database mirrors Microsoft.SqlServer.Management.Smo.Database.
func (*Database) ActualPlan ¶ added in v0.0.4
func (d *Database) ActualPlan(sql string) (*ExecutionPlan, error)
ActualPlan executes sql and captures its actual execution plan (SET STATISTICS XML ON) — SSMS's "Include Actual Execution Plan". Unlike EstimatedPlan, this runs the statement.
func (*Database) ActualPlanContext ¶ added in v0.0.4
ActualPlanContext is the context-aware variant of ActualPlan.
func (*Database) AddExtendedProperty ¶
func (d *Database) AddExtendedProperty(name, value string, level ExtendedPropertyLevel) error
AddExtendedProperty adds a new extended property on an object. Fails if a property with this name already exists at this level — see SetExtendedProperty to update one.
func (*Database) AddExtendedPropertyContext ¶ added in v0.0.4
func (d *Database) AddExtendedPropertyContext(ctx context.Context, name, value string, level ExtendedPropertyLevel) error
AddExtendedPropertyContext is the context-aware variant of AddExtendedProperty.
func (*Database) AddFile ¶ added in v0.0.4
func (d *Database) AddFile(spec DatabaseFileSpec) error
AddFile adds a new data or log file to the database.
func (*Database) AddFileContext ¶ added in v0.0.4
func (d *Database) AddFileContext(ctx context.Context, spec DatabaseFileSpec) error
AddFileContext is the context-aware variant of AddFile.
func (*Database) AddFileGroup ¶ added in v0.0.4
AddFileGroup adds a new (empty) filegroup to the database.
func (*Database) AddFileGroupContext ¶ added in v0.0.4
AddFileGroupContext is the context-aware variant of AddFileGroup.
func (*Database) AddRoleMember ¶
AddRoleMember adds a user to a database role.
func (*Database) AddRoleMemberContext ¶
AddRoleMemberContext is the context-aware variant.
func (*Database) AlterFile ¶ added in v0.0.4
func (d *Database) AlterFile(name string, m FileModify) error
AlterFile changes an existing file's name, size, growth, or max size.
func (*Database) AlterFileContext ¶ added in v0.0.4
AlterFileContext is the context-aware variant of AlterFile.
func (*Database) BulkInsert ¶ added in v0.0.4
BulkInsert streams rows into a table using SQL Server's TDS bulk-copy protocol — the same fast path bcp and SSMS "Import Data" use, far faster than row-by-row INSERTs. It returns the number of rows copied.
rows yields one []any per row, its values ordered to match bc.Columns; a nil element becomes SQL NULL. Yielding a non-nil error aborts the load and that error is returned (wrapped), so a streaming source such as a CSV reader can surface a read failure. Use SliceRows for an in-memory slice.
func (*Database) BulkInsertContext ¶ added in v0.0.4
func (d *Database) BulkInsertContext(ctx context.Context, bc BulkCopy, rows iter.Seq2[[]any, error]) (int64, error)
BulkInsertContext is the context-aware variant of BulkInsert. Cancelling ctx stops the load; the count of rows copied before cancellation is returned alongside the error.
func (*Database) Catalog ¶ added in v0.0.5
Catalog returns a bulk snapshot of every user table and view in the database, each with its columns, sorted by schema then name.
func (*Database) CatalogContext ¶ added in v0.0.5
CatalogContext is the context-aware variant of Catalog.
func (*Database) ChangeTracking ¶ added in v0.0.4
func (d *Database) ChangeTracking() (*ChangeTrackingInfo, error)
ChangeTracking returns the database's change tracking settings. Enabled is false (with the rest zero-valued) when change tracking has never been turned on for this database — there's simply no row for it in sys.change_tracking_databases, not an error.
func (*Database) ChangeTrackingContext ¶ added in v0.0.4
func (d *Database) ChangeTrackingContext(ctx context.Context) (*ChangeTrackingInfo, error)
ChangeTrackingContext is the context-aware variant of ChangeTracking.
func (*Database) ClearQueryStore ¶ added in v0.0.5
ClearQueryStore discards all captured Query Store data (SSMS's "Clear Query Store" action) without changing its configuration.
func (*Database) ClearQueryStoreContext ¶ added in v0.0.5
ClearQueryStoreContext is the context-aware variant of ClearQueryStore.
func (*Database) ColumnEncryptionKeySeq ¶ added in v0.0.5
func (d *Database) ColumnEncryptionKeySeq(ctx context.Context) iter.Seq2[*ColumnEncryptionKey, error]
ColumnEncryptionKeySeq returns an iterator over all column encryption keys in the database.
func (*Database) ColumnEncryptionKeys ¶
func (d *Database) ColumnEncryptionKeys() ([]*ColumnEncryptionKey, error)
ColumnEncryptionKeys returns all column encryption keys in the database.
func (*Database) ColumnEncryptionKeysContext ¶ added in v0.0.5
func (d *Database) ColumnEncryptionKeysContext(ctx context.Context) ([]*ColumnEncryptionKey, error)
ColumnEncryptionKeysContext is the context-aware variant of ColumnEncryptionKeys.
func (*Database) ColumnMasterKeySeq ¶ added in v0.0.5
ColumnMasterKeySeq returns an iterator over all column master keys in the database.
func (*Database) ColumnMasterKeys ¶
func (d *Database) ColumnMasterKeys() ([]*ColumnMasterKey, error)
ColumnMasterKeys returns all column master keys in the database.
func (*Database) ColumnMasterKeysContext ¶ added in v0.0.5
func (d *Database) ColumnMasterKeysContext(ctx context.Context) ([]*ColumnMasterKey, error)
ColumnMasterKeysContext is the context-aware variant of ColumnMasterKeys.
func (*Database) ColumnPermissionSeq ¶ added in v0.0.8
func (d *Database) ColumnPermissionSeq(ctx context.Context, schema, name string) iter.Seq2[*ColumnPermissionEntry, error]
ColumnPermissionSeq returns an iterator over every column-level GRANT/DENY entry recorded on schema.name.
func (*Database) ColumnPermissions ¶ added in v0.0.8
func (d *Database) ColumnPermissions(schema, name string) ([]*ColumnPermissionEntry, error)
ColumnPermissions returns every column-level GRANT/DENY entry recorded on schema.name, for all principals and all columns.
func (*Database) ColumnPermissionsContext ¶ added in v0.0.8
func (d *Database) ColumnPermissionsContext(ctx context.Context, schema, name string) ([]*ColumnPermissionEntry, error)
ColumnPermissionsContext is the context-aware variant of ColumnPermissions.
func (*Database) ColumnPermissionsForPrincipal ¶ added in v0.0.8
func (d *Database) ColumnPermissionsForPrincipal(principal string) ([]*ColumnPermissionEntry, error)
ColumnPermissionsForPrincipal returns every column-level GRANT/DENY entry principal holds anywhere in the database — the column-level counterpart of PermissionsForPrincipal, which reports object-, schema- and database-scoped entries and deliberately leaves column entries out (a Securables page lists securables, and a column is not one of them; SSMS puts them behind a per-securable "Column Permissions..." button).
func (*Database) ColumnPermissionsForPrincipalContext ¶ added in v0.0.8
func (d *Database) ColumnPermissionsForPrincipalContext(ctx context.Context, principal string) ([]*ColumnPermissionEntry, error)
ColumnPermissionsForPrincipalContext is the context-aware variant of ColumnPermissionsForPrincipal.
func (*Database) ColumnPermissionsForPrincipalSeq ¶ added in v0.0.8
func (d *Database) ColumnPermissionsForPrincipalSeq(ctx context.Context, principal string) iter.Seq2[*ColumnPermissionEntry, error]
ColumnPermissionsForPrincipalSeq returns an iterator over every column-level GRANT/DENY entry principal holds anywhere in the database.
func (*Database) CompatibilityLevel ¶
func (d *Database) CompatibilityLevel() CompatibilityLevel
CompatibilityLevel returns the database compatibility level.
func (*Database) CreateColumnMasterKey ¶
func (d *Database) CreateColumnMasterKey(name, keyStoreProvider, keyPath string, enclaveComputations bool) error
CreateColumnMasterKey creates a column master key metadata entry. Note: the actual key must already exist in the key store.
func (*Database) CreateColumnMasterKeyContext ¶ added in v0.0.5
func (d *Database) CreateColumnMasterKeyContext(ctx context.Context, name, keyStoreProvider, keyPath string, enclaveComputations bool) error
CreateColumnMasterKeyContext is the context-aware variant of CreateColumnMasterKey.
func (*Database) CreateDate ¶
CreateDate returns the date the database was created.
func (*Database) CreatePartitionFunction ¶
func (d *Database) CreatePartitionFunction(req CreatePartitionFunctionRequest) error
CreatePartitionFunction creates a partition function.
func (*Database) CreatePartitionFunctionContext ¶ added in v0.0.5
func (d *Database) CreatePartitionFunctionContext(ctx context.Context, req CreatePartitionFunctionRequest) error
CreatePartitionFunctionContext is the context-aware variant of CreatePartitionFunction.
func (*Database) CreatePartitionScheme ¶
CreatePartitionScheme creates a partition scheme backed by a partition function.
func (*Database) CreatePartitionSchemeContext ¶ added in v0.0.5
func (d *Database) CreatePartitionSchemeContext(ctx context.Context, name, functionName string, fileGroups []string) error
CreatePartitionSchemeContext is the context-aware variant of CreatePartitionScheme.
func (*Database) CreateSchema ¶
CreateSchema creates a new schema in the database.
func (*Database) CreateSchemaContext ¶
CreateSchemaContext is the context-aware variant of CreateSchema.
func (*Database) CreateSequence ¶
func (d *Database) CreateSequence(req CreateSequenceRequest) error
CreateSequence creates a new sequence in the database.
func (*Database) CreateSequenceContext ¶ added in v0.0.5
func (d *Database) CreateSequenceContext(ctx context.Context, req CreateSequenceRequest) error
CreateSequenceContext is the context-aware variant of CreateSequence.
func (*Database) CreateStoredProcedure ¶
CreateStoredProcedure creates (or replaces) a stored procedure. schema may be empty (defaults to dbo). body is the raw T-SQL after AS.
func (*Database) CreateStoredProcedureContext ¶
func (d *Database) CreateStoredProcedureContext(ctx context.Context, schema, name, body string) error
CreateStoredProcedureContext is the context-aware variant.
func (*Database) CreateSynonym ¶
CreateSynonym creates a synonym for a base object. baseObject should be the fully qualified name, e.g. "[OtherDB].[dbo].[MyTable]".
func (*Database) CreateSynonymContext ¶ added in v0.0.5
CreateSynonymContext is the context-aware variant of CreateSynonym.
func (*Database) CreateTable ¶
func (d *Database) CreateTable(req CreateTableRequest) error
CreateTable creates a table from a CreateTableRequest.
func (*Database) CreateTableContext ¶
func (d *Database) CreateTableContext(ctx context.Context, req CreateTableRequest) error
CreateTableContext is the context-aware variant of CreateTable.
func (*Database) CreateUser ¶
CreateUser creates a database user mapped to a login.
func (*Database) CreateUserContext ¶
func (d *Database) CreateUserContext(ctx context.Context, userName, loginName, defaultSchema string) error
CreateUserContext is the context-aware variant of CreateUser.
func (*Database) DatabaseExtendedProperties ¶
func (d *Database) DatabaseExtendedProperties() ([]*ExtendedProperty, error)
DatabaseExtendedProperties returns all extended properties at database level.
func (*Database) DatabaseExtendedPropertiesContext ¶ added in v0.0.5
func (d *Database) DatabaseExtendedPropertiesContext(ctx context.Context) ([]*ExtendedProperty, error)
DatabaseExtendedPropertiesContext is the context-aware variant of DatabaseExtendedProperties.
func (*Database) DatabaseExtendedPropertySeq ¶ added in v0.0.5
func (d *Database) DatabaseExtendedPropertySeq(ctx context.Context) iter.Seq2[*ExtendedProperty, error]
DatabaseExtendedPropertySeq returns an iterator over all extended properties at database level.
func (*Database) DatabasePermissionSeq ¶ added in v0.0.4
func (d *Database) DatabasePermissionSeq(ctx context.Context) iter.Seq2[*DatabasePermissionEntry, error]
DatabasePermissionSeq returns an iterator over all database-scoped GRANT/DENY entries.
func (*Database) DatabasePermissions ¶ added in v0.0.4
func (d *Database) DatabasePermissions() ([]*DatabasePermissionEntry, error)
DatabasePermissions returns every database-scoped GRANT/DENY entry — permissions granted on the database itself, not on a specific object within it (see Permissions for that).
func (*Database) DatabasePermissionsContext ¶ added in v0.0.4
func (d *Database) DatabasePermissionsContext(ctx context.Context) ([]*DatabasePermissionEntry, error)
DatabasePermissionsContext is the context-aware variant of DatabasePermissions.
func (*Database) DatabaseRoleSeq ¶ added in v0.0.6
DatabaseRoleSeq returns an iterator over all database-level roles.
func (*Database) DatabaseRoles ¶
func (d *Database) DatabaseRoles() ([]*DatabaseRole, error)
DatabaseRoles returns all roles defined in the database.
func (*Database) DatabaseRolesContext ¶
func (d *Database) DatabaseRolesContext(ctx context.Context) ([]*DatabaseRole, error)
DatabaseRolesContext is the context-aware variant of DatabaseRoles.
func (*Database) DatabaseScopedConfigSeq ¶ added in v0.0.6
func (d *Database) DatabaseScopedConfigSeq(ctx context.Context) iter.Seq2[*DatabaseScopedConfig, error]
DatabaseScopedConfigSeq returns an iterator over all database-scoped configuration options.
func (*Database) DatabaseScopedConfigs ¶ added in v0.0.5
func (d *Database) DatabaseScopedConfigs() ([]*DatabaseScopedConfig, error)
DatabaseScopedConfigs returns every database scoped configuration option.
func (*Database) DatabaseScopedConfigsContext ¶ added in v0.0.5
func (d *Database) DatabaseScopedConfigsContext(ctx context.Context) ([]*DatabaseScopedConfig, error)
DatabaseScopedConfigsContext is the context-aware variant of DatabaseScopedConfigs.
func (*Database) DenyColumnPermission ¶ added in v0.0.8
func (d *Database) DenyColumnPermission(schema, name string, permission ObjectPermission, columns []string, principal string) error
DenyColumnPermission denies permission on the named columns of schema.name to principal.
func (*Database) DenyColumnPermissionContext ¶ added in v0.0.8
func (d *Database) DenyColumnPermissionContext(ctx context.Context, schema, name string, permission ObjectPermission, columns []string, principal string) error
DenyColumnPermissionContext is the context-aware variant of DenyColumnPermission.
func (*Database) DenyColumnPermissionWithOptions ¶ added in v0.0.8
func (d *Database) DenyColumnPermissionWithOptions(schema, name string, permission ObjectPermission, columns []string, principal string, opts PermissionOptions) error
DenyColumnPermissionWithOptions denies a column-level permission honouring opts — the CASCADE form of DenyColumnPermission.
func (*Database) DenyColumnPermissionWithOptionsContext ¶ added in v0.0.8
func (d *Database) DenyColumnPermissionWithOptionsContext(ctx context.Context, schema, name string, permission ObjectPermission, columns []string, principal string, opts PermissionOptions) error
DenyColumnPermissionWithOptionsContext is the context-aware variant of DenyColumnPermissionWithOptions.
func (*Database) DenyDatabasePermission ¶ added in v0.0.4
DenyDatabasePermission denies a database-level permission to principal.
func (*Database) DenyDatabasePermissionContext ¶ added in v0.0.4
func (d *Database) DenyDatabasePermissionContext(ctx context.Context, permission, principal string) error
DenyDatabasePermissionContext is the context-aware variant of DenyDatabasePermission.
func (*Database) DenyDatabasePermissionWithOptions ¶ added in v0.0.8
func (d *Database) DenyDatabasePermissionWithOptions(permission, principal string, opts PermissionOptions) error
DenyDatabasePermissionWithOptions denies a database-level permission to principal, honouring opts.
func (*Database) DenyDatabasePermissionWithOptionsContext ¶ added in v0.0.8
func (d *Database) DenyDatabasePermissionWithOptionsContext(ctx context.Context, permission, principal string, opts PermissionOptions) error
DenyDatabasePermissionWithOptionsContext is the context-aware variant of DenyDatabasePermissionWithOptions.
func (*Database) DenyPermission ¶ added in v0.0.4
func (d *Database) DenyPermission(schema, name string, permission ObjectPermission, principal string) error
DenyPermission denies permission on schema.name to principal.
func (*Database) DenyPermissionContext ¶ added in v0.0.4
func (d *Database) DenyPermissionContext(ctx context.Context, schema, name string, permission ObjectPermission, principal string) error
DenyPermissionContext is the context-aware variant of DenyPermission.
func (*Database) DenyPermissionWithOptions ¶ added in v0.0.8
func (d *Database) DenyPermissionWithOptions(schema, name string, permission ObjectPermission, principal string, opts PermissionOptions) error
DenyPermissionWithOptions denies permission on schema.name to principal, honouring opts — the CASCADE form of DenyPermission.
func (*Database) DenyPermissionWithOptionsContext ¶ added in v0.0.8
func (d *Database) DenyPermissionWithOptionsContext(ctx context.Context, schema, name string, permission ObjectPermission, principal string, opts PermissionOptions) error
DenyPermissionWithOptionsContext is the context-aware variant of DenyPermissionWithOptions.
func (*Database) DenySchemaPermission ¶ added in v0.0.5
func (d *Database) DenySchemaPermission(schemaName string, permission ObjectPermission, principal string) error
DenySchemaPermission denies permission on a schema to principal.
func (*Database) DenySchemaPermissionContext ¶ added in v0.0.5
func (d *Database) DenySchemaPermissionContext(ctx context.Context, schemaName string, permission ObjectPermission, principal string) error
DenySchemaPermissionContext is the context-aware variant of DenySchemaPermission.
func (*Database) DenySchemaPermissionWithOptions ¶ added in v0.0.8
func (d *Database) DenySchemaPermissionWithOptions(schemaName string, permission ObjectPermission, principal string, opts PermissionOptions) error
DenySchemaPermissionWithOptions denies permission on a schema to principal, honouring opts.
func (*Database) DenySchemaPermissionWithOptionsContext ¶ added in v0.0.8
func (d *Database) DenySchemaPermissionWithOptionsContext(ctx context.Context, schemaName string, permission ObjectPermission, principal string, opts PermissionOptions) error
DenySchemaPermissionWithOptionsContext is the context-aware variant of DenySchemaPermissionWithOptions.
func (*Database) Dependencies ¶ added in v0.0.4
func (d *Database) Dependencies(schema, name string) ([]*Dependency, error)
Dependencies returns the objects that schema.name's own definition references — SSMS's "Object Dependencies > Objects on which ... depends".
func (*Database) DependenciesContext ¶ added in v0.0.4
func (d *Database) DependenciesContext(ctx context.Context, schema, name string) ([]*Dependency, error)
DependenciesContext is the context-aware variant of Dependencies.
func (*Database) DependencySeq ¶ added in v0.0.6
func (d *Database) DependencySeq(ctx context.Context, schema, name string) iter.Seq2[*Dependency, error]
DependencySeq returns an iterator over the objects schema.name's own definition references.
func (*Database) DependentSeq ¶ added in v0.0.6
func (d *Database) DependentSeq(ctx context.Context, schema, name string) iter.Seq2[*Dependency, error]
DependentSeq returns an iterator over the objects whose own definition references schema.name.
func (*Database) Dependents ¶ added in v0.0.4
func (d *Database) Dependents(schema, name string) ([]*Dependency, error)
Dependents returns the objects whose own definition references schema.name — SSMS's "Object Dependencies > Objects that depend on ...".
func (*Database) DependentsContext ¶ added in v0.0.4
func (d *Database) DependentsContext(ctx context.Context, schema, name string) ([]*Dependency, error)
DependentsContext is the context-aware variant of Dependents.
func (*Database) DropExtendedProperty ¶
func (d *Database) DropExtendedProperty(name string, level ExtendedPropertyLevel) error
DropExtendedProperty drops an extended property from an object.
func (*Database) DropExtendedPropertyContext ¶ added in v0.0.4
func (d *Database) DropExtendedPropertyContext(ctx context.Context, name string, level ExtendedPropertyLevel) error
DropExtendedPropertyContext is the context-aware variant of DropExtendedProperty.
func (*Database) DropSchema ¶
DropSchema drops a schema from the database.
func (*Database) DropSchemaContext ¶
DropSchemaContext is the context-aware variant of DropSchema.
func (*Database) DropStoredProcedure ¶
DropStoredProcedure drops a stored procedure.
func (*Database) DropStoredProcedureContext ¶
DropStoredProcedureContext is the context-aware variant.
func (*Database) DropTable ¶
DropTable drops a table. When cascade=true it first drops all incoming foreign-key constraints.
func (*Database) DropTableContext ¶
DropTableContext is the context-aware variant of DropTable.
func (*Database) DropUserContext ¶
DropUserContext is the context-aware variant of DropUser.
func (*Database) EffectiveObjectPermissionSeq ¶ added in v0.0.8
func (d *Database) EffectiveObjectPermissionSeq(ctx context.Context, schema, name, principal string) iter.Seq2[*EffectivePermission, error]
EffectiveObjectPermissionSeq returns an iterator over every permission principal effectively holds on the table or view schema.name.
func (*Database) EffectiveObjectPermissions ¶ added in v0.0.8
func (d *Database) EffectiveObjectPermissions(schema, name, principal string) ([]*EffectivePermission, error)
EffectiveObjectPermissions returns every permission principal effectively holds on the table or view schema.name, column-level entries included (see EffectivePermission.Subentity). principal must be a database user — see EffectivePermissions for why a role cannot be one.
func (*Database) EffectiveObjectPermissionsContext ¶ added in v0.0.8
func (d *Database) EffectiveObjectPermissionsContext(ctx context.Context, schema, name, principal string) ([]*EffectivePermission, error)
EffectiveObjectPermissionsContext is the context-aware variant of EffectiveObjectPermissions.
func (*Database) EffectivePermissionSeq ¶ added in v0.0.8
func (d *Database) EffectivePermissionSeq(ctx context.Context, principal string) iter.Seq2[*EffectivePermission, error]
EffectivePermissionSeq returns an iterator over every permission principal effectively holds on the database itself.
func (*Database) EffectivePermissions ¶ added in v0.0.8
func (d *Database) EffectivePermissions(principal string) ([]*EffectivePermission, error)
EffectivePermissions returns every permission principal effectively holds on the database itself — SSMS's Effective tab on a database user's Securables page, with the database row selected.
principal must be a database *user* that exists in this database. A database role is not accepted and cannot be made to work: every function here resolves permissions by impersonating the principal, and SQL Server refuses to impersonate a role — "Cannot execute as the database principal because the principal %q does not exist, this type of principal cannot be impersonated, or you do not have permission" (Msg 15517), verified live 2026-08-05 against a role that plainly did exist. There is no principal argument to fn_my_permissions to use instead; it always answers for the current execution context.
func (*Database) EffectivePermissionsContext ¶ added in v0.0.8
func (d *Database) EffectivePermissionsContext(ctx context.Context, principal string) ([]*EffectivePermission, error)
EffectivePermissionsContext is the context-aware variant of EffectivePermissions.
func (*Database) EffectiveSchemaPermissionSeq ¶ added in v0.0.8
func (d *Database) EffectiveSchemaPermissionSeq(ctx context.Context, schemaName, principal string) iter.Seq2[*EffectivePermission, error]
EffectiveSchemaPermissionSeq returns an iterator over every permission principal effectively holds on a schema.
func (*Database) EffectiveSchemaPermissions ¶ added in v0.0.8
func (d *Database) EffectiveSchemaPermissions(schemaName, principal string) ([]*EffectivePermission, error)
EffectiveSchemaPermissions returns every permission principal effectively holds on a schema. principal must be a database user — see EffectivePermissions for why a role cannot be one.
func (*Database) EffectiveSchemaPermissionsContext ¶ added in v0.0.8
func (d *Database) EffectiveSchemaPermissionsContext(ctx context.Context, schemaName, principal string) ([]*EffectivePermission, error)
EffectiveSchemaPermissionsContext is the context-aware variant of EffectiveSchemaPermissions.
func (*Database) EstimatedPlan ¶ added in v0.0.4
func (d *Database) EstimatedPlan(sql string) (*ExecutionPlan, error)
EstimatedPlan captures sql's estimated execution plan without running it (SET SHOWPLAN_XML ON) — SSMS's "Display Estimated Execution Plan".
func (*Database) EstimatedPlanContext ¶ added in v0.0.4
func (d *Database) EstimatedPlanContext(ctx context.Context, sqlText string) (*ExecutionPlan, error)
EstimatedPlanContext is the context-aware variant of EstimatedPlan.
func (*Database) ExecProc ¶ added in v0.0.4
func (d *Database) ExecProc(schema, name string, params ...ProcParam) (ProcResult, error)
ExecProc executes a stored procedure by schema and name, binding the given parameters and capturing its return status. Output parameter values are written to the pointers passed to Out / InOut. Any result sets the procedure emits are discarded; use the query methods when you need the rows.
func (*Database) ExecProcContext ¶ added in v0.0.4
func (d *Database) ExecProcContext(ctx context.Context, schema, name string, params ...ProcParam) (ProcResult, error)
ExecProcContext is the context-aware variant of ExecProc.
func (*Database) ExtendedProperties ¶
func (d *Database) ExtendedProperties(level ExtendedPropertyLevel) ([]*ExtendedProperty, error)
ExtendedProperties returns the extended properties for a specific object.
func (*Database) ExtendedPropertiesContext ¶ added in v0.0.5
func (d *Database) ExtendedPropertiesContext(ctx context.Context, level ExtendedPropertyLevel) ([]*ExtendedProperty, error)
ExtendedPropertiesContext is the context-aware variant of ExtendedProperties.
func (*Database) ExtendedPropertySeq ¶ added in v0.0.6
func (d *Database) ExtendedPropertySeq(ctx context.Context, level ExtendedPropertyLevel) iter.Seq2[*ExtendedProperty, error]
ExtendedPropertySeq returns an iterator over the extended properties at the given level (as opposed to DatabaseExtendedPropertySeq's database-level-only shortcut).
func (*Database) FileGroupSeq ¶ added in v0.0.6
FileGroupSeq returns an iterator over all filegroups in the database.
func (*Database) FileGroups ¶
FileGroups returns all filegroups and their files.
func (*Database) FileGroupsContext ¶
FileGroupsContext is the context-aware variant of FileGroups.
func (*Database) FileSeq ¶ added in v0.0.4
FileSeq returns an iterator over every file in the database.
func (*Database) Files ¶ added in v0.0.4
func (d *Database) Files() ([]*DatabaseFileInfo, error)
Files returns every file in the database, data and log alike.
func (*Database) FilesContext ¶ added in v0.0.4
func (d *Database) FilesContext(ctx context.Context) ([]*DatabaseFileInfo, error)
FilesContext is the context-aware variant of Files.
func (*Database) FindSecurables ¶ added in v0.0.8
func (d *Database) FindSecurables(search SecurableSearch) ([]SecurableRef, error)
FindSecurables returns the schemas, tables and views matching search.
func (*Database) FindSecurablesContext ¶ added in v0.0.8
func (d *Database) FindSecurablesContext(ctx context.Context, search SecurableSearch) ([]SecurableRef, error)
FindSecurablesContext is the context-aware variant of FindSecurables.
One query over sys.schemas, sys.tables and sys.views, for a caller that needs candidates matching what the user typed rather than the whole catalog — a database with thousands of tables makes "list everything and filter in the client" both slow to open and useless as a picker.
func (*Database) FlushQueryStore ¶ added in v0.0.5
FlushQueryStore forces Query Store to persist its in-memory data to disk immediately (SSMS's "Flush Data" action), via sys.sp_query_store_flush_db.
func (*Database) FlushQueryStoreContext ¶ added in v0.0.5
FlushQueryStoreContext is the context-aware variant of FlushQueryStore.
func (*Database) GrantColumnPermission ¶ added in v0.0.8
func (d *Database) GrantColumnPermission(schema, name string, permission ObjectPermission, columns []string, principal string) error
GrantColumnPermission grants permission on the named columns of schema.name to principal. Passing several columns renders the one statement SQL Server accepts for them — GRANT SELECT (a, b) ON ... — not one statement per column.
func (*Database) GrantColumnPermissionContext ¶ added in v0.0.8
func (d *Database) GrantColumnPermissionContext(ctx context.Context, schema, name string, permission ObjectPermission, columns []string, principal string) error
GrantColumnPermissionContext is the context-aware variant of GrantColumnPermission.
func (*Database) GrantColumnPermissionWithOptions ¶ added in v0.0.8
func (d *Database) GrantColumnPermissionWithOptions(schema, name string, permission ObjectPermission, columns []string, principal string, opts PermissionOptions) error
GrantColumnPermissionWithOptions grants a column-level permission honouring opts — the WITH GRANT OPTION form of GrantColumnPermission.
func (*Database) GrantColumnPermissionWithOptionsContext ¶ added in v0.0.8
func (d *Database) GrantColumnPermissionWithOptionsContext(ctx context.Context, schema, name string, permission ObjectPermission, columns []string, principal string, opts PermissionOptions) error
GrantColumnPermissionWithOptionsContext is the context-aware variant of GrantColumnPermissionWithOptions.
func (*Database) GrantDatabasePermission ¶ added in v0.0.4
GrantDatabasePermission grants a database-level permission to principal.
func (*Database) GrantDatabasePermissionContext ¶ added in v0.0.4
func (d *Database) GrantDatabasePermissionContext(ctx context.Context, permission, principal string) error
GrantDatabasePermissionContext is the context-aware variant of GrantDatabasePermission.
func (*Database) GrantDatabasePermissionWithOptions ¶ added in v0.0.8
func (d *Database) GrantDatabasePermissionWithOptions(permission, principal string, opts PermissionOptions) error
GrantDatabasePermissionWithOptions grants a database-level permission to principal, honouring opts.
func (*Database) GrantDatabasePermissionWithOptionsContext ¶ added in v0.0.8
func (d *Database) GrantDatabasePermissionWithOptionsContext(ctx context.Context, permission, principal string, opts PermissionOptions) error
GrantDatabasePermissionWithOptionsContext is the context-aware variant of GrantDatabasePermissionWithOptions.
func (*Database) GrantPermission ¶ added in v0.0.4
func (d *Database) GrantPermission(schema, name string, permission ObjectPermission, principal string) error
GrantPermission grants permission on schema.name to principal.
func (*Database) GrantPermissionContext ¶ added in v0.0.4
func (d *Database) GrantPermissionContext(ctx context.Context, schema, name string, permission ObjectPermission, principal string) error
GrantPermissionContext is the context-aware variant of GrantPermission.
func (*Database) GrantPermissionWithOptions ¶ added in v0.0.8
func (d *Database) GrantPermissionWithOptions(schema, name string, permission ObjectPermission, principal string, opts PermissionOptions) error
GrantPermissionWithOptions grants permission on schema.name to principal, honouring opts — the WITH GRANT OPTION form of GrantPermission.
func (*Database) GrantPermissionWithOptionsContext ¶ added in v0.0.8
func (d *Database) GrantPermissionWithOptionsContext(ctx context.Context, schema, name string, permission ObjectPermission, principal string, opts PermissionOptions) error
GrantPermissionWithOptionsContext is the context-aware variant of GrantPermissionWithOptions.
func (*Database) GrantSchemaPermission ¶ added in v0.0.5
func (d *Database) GrantSchemaPermission(schemaName string, permission ObjectPermission, principal string) error
GrantSchemaPermission grants permission on a schema to principal.
func (*Database) GrantSchemaPermissionContext ¶ added in v0.0.5
func (d *Database) GrantSchemaPermissionContext(ctx context.Context, schemaName string, permission ObjectPermission, principal string) error
GrantSchemaPermissionContext is the context-aware variant of GrantSchemaPermission.
func (*Database) GrantSchemaPermissionWithOptions ¶ added in v0.0.8
func (d *Database) GrantSchemaPermissionWithOptions(schemaName string, permission ObjectPermission, principal string, opts PermissionOptions) error
GrantSchemaPermissionWithOptions grants permission on a schema to principal, honouring opts.
func (*Database) GrantSchemaPermissionWithOptionsContext ¶ added in v0.0.8
func (d *Database) GrantSchemaPermissionWithOptionsContext(ctx context.Context, schemaName string, permission ObjectPermission, principal string, opts PermissionOptions) error
GrantSchemaPermissionWithOptionsContext is the context-aware variant of GrantSchemaPermissionWithOptions.
func (*Database) IsReadOnly ¶
IsReadOnly reports whether the database is set to read-only.
func (*Database) IsSystem ¶ added in v0.0.4
IsSystem reports whether this is one of SQL Server's four built-in system databases (master, tempdb, model, msdb), identified by their permanently reserved database_id (1-4) rather than by name.
func (*Database) ObjectColumnSeq ¶ added in v0.0.8
func (d *Database) ObjectColumnSeq(ctx context.Context, schema, name string) iter.Seq2[*Column, error]
ObjectColumnSeq returns an iterator over the columns of the table or view schema.name — the Database-scoped counterpart of Table.ColumnSeq, and the only one of the two that reaches a view.
func (*Database) ObjectColumns ¶ added in v0.0.8
ObjectColumns returns the columns of the table or view schema.name, in ordinal order. Table.Columns covers tables only, and a view has no handle type of its own that carries an object_id, so this is the way to reach a view's columns — which do carry permissions, and so do turn up on a Securables page.
func (*Database) ObjectColumnsContext ¶ added in v0.0.8
func (d *Database) ObjectColumnsContext(ctx context.Context, schema, name string) ([]*Column, error)
ObjectColumnsContext is the context-aware variant of ObjectColumns.
The columns a view does not have — identity, computed text, defaults, primary key — come back at their zero values, because the joins that supply them simply do not match for a view. Name, ordinal, type, length/precision/scale, nullability and collation are all real.
func (*Database) Options ¶ added in v0.0.4
func (d *Database) Options() (*DatabaseOptions, error)
Options returns the database's ALTER DATABASE SET options.
func (*Database) OptionsContext ¶ added in v0.0.4
func (d *Database) OptionsContext(ctx context.Context) (*DatabaseOptions, error)
OptionsContext is the context-aware variant of Options. Queried against sys.databases at server scope (like Server.DatabaseByNameContext), not through d.query — these are catalog-view columns, not per-database data.
func (*Database) PartitionFunctionSeq ¶ added in v0.0.5
PartitionFunctionSeq returns an iterator over all partition functions in the database.
func (*Database) PartitionFunctions ¶
func (d *Database) PartitionFunctions() ([]*PartitionFunction, error)
PartitionFunctions returns all partition functions in the database.
func (*Database) PartitionFunctionsContext ¶ added in v0.0.5
func (d *Database) PartitionFunctionsContext(ctx context.Context) ([]*PartitionFunction, error)
PartitionFunctionsContext is the context-aware variant of PartitionFunctions.
func (*Database) PartitionSchemeSeq ¶ added in v0.0.5
PartitionSchemeSeq returns an iterator over all partition schemes in the database.
func (*Database) PartitionSchemes ¶
func (d *Database) PartitionSchemes() ([]*PartitionScheme, error)
PartitionSchemes returns all partition schemes in the database.
func (*Database) PartitionSchemesContext ¶ added in v0.0.5
func (d *Database) PartitionSchemesContext(ctx context.Context) ([]*PartitionScheme, error)
PartitionSchemesContext is the context-aware variant of PartitionSchemes.
func (*Database) PermissionSeq ¶ added in v0.0.6
func (d *Database) PermissionSeq(ctx context.Context, schema, name string) iter.Seq2[*PermissionEntry, error]
PermissionSeq returns an iterator over the GRANT/DENY entries recorded for schema.name.
func (*Database) Permissions ¶ added in v0.0.4
func (d *Database) Permissions(schema, name string) ([]*PermissionEntry, error)
Permissions returns the GRANT/DENY entries recorded for schema.name — SSMS's object Properties > Permissions page.
func (*Database) PermissionsContext ¶ added in v0.0.4
func (d *Database) PermissionsContext(ctx context.Context, schema, name string) ([]*PermissionEntry, error)
PermissionsContext is the context-aware variant of Permissions.
func (*Database) PermissionsForPrincipal ¶ added in v0.0.5
func (d *Database) PermissionsForPrincipal(principal string) ([]*PrincipalSecurable, error)
PermissionsForPrincipal returns every explicit GRANT/DENY entry recorded for principal across database-, schema-, and table/view-scoped securables. Stored procedure and function securables are deliberately excluded — they need their own permission catalog (EXECUTE-centric, distinct from the table/view one) not built yet; see SchemaPermissionNames/ ObjectPermissionNames for the catalogs this DOES cover.
func (*Database) PermissionsForPrincipalContext ¶ added in v0.0.5
func (d *Database) PermissionsForPrincipalContext(ctx context.Context, principal string) ([]*PrincipalSecurable, error)
PermissionsForPrincipalContext is the context-aware variant of PermissionsForPrincipal.
func (*Database) PermissionsForPrincipalSeq ¶ added in v0.0.6
func (d *Database) PermissionsForPrincipalSeq(ctx context.Context, principal string) iter.Seq2[*PrincipalSecurable, error]
PermissionsForPrincipalSeq returns an iterator over every explicit GRANT/DENY entry recorded for principal across database-, schema-, and table/view-scoped securables.
func (*Database) QueryStore ¶ added in v0.0.5
func (d *Database) QueryStore() (*QueryStoreInfo, error)
QueryStore returns the database's Query Store configuration and state.
func (*Database) QueryStoreContext ¶ added in v0.0.5
func (d *Database) QueryStoreContext(ctx context.Context) (*QueryStoreInfo, error)
QueryStoreContext is the context-aware variant of QueryStore.
func (*Database) RecoveryModel ¶
func (d *Database) RecoveryModel() RecoveryModel
RecoveryModel returns the database recovery model.
func (*Database) RemoveFile ¶ added in v0.0.4
RemoveFile drops a file from the database. The file must be empty (0 bytes of used space) — SQL Server itself enforces this, not gosmo.
func (*Database) RemoveFileContext ¶ added in v0.0.4
RemoveFileContext is the context-aware variant of RemoveFile.
func (*Database) RemoveFileGroup ¶ added in v0.0.4
RemoveFileGroup drops a filegroup. It must be empty (no files) — SQL Server itself enforces this, not gosmo.
func (*Database) RemoveFileGroupContext ¶ added in v0.0.4
RemoveFileGroupContext is the context-aware variant of RemoveFileGroup.
func (*Database) RemoveRoleMember ¶
RemoveRoleMember removes a user from a database role.
func (*Database) RemoveRoleMemberContext ¶
RemoveRoleMemberContext is the context-aware variant.
func (*Database) RenameTable ¶
RenameTable renames a table using sp_rename.
func (*Database) RenameTableContext ¶
RenameTableContext is the context-aware variant of RenameTable.
func (*Database) RevokeColumnPermission ¶ added in v0.0.8
func (d *Database) RevokeColumnPermission(schema, name string, permission ObjectPermission, columns []string, principal string) error
RevokeColumnPermission revokes permission on the named columns of schema.name from principal.
func (*Database) RevokeColumnPermissionContext ¶ added in v0.0.8
func (d *Database) RevokeColumnPermissionContext(ctx context.Context, schema, name string, permission ObjectPermission, columns []string, principal string) error
RevokeColumnPermissionContext is the context-aware variant of RevokeColumnPermission.
func (*Database) RevokeColumnPermissionWithOptions ¶ added in v0.0.8
func (d *Database) RevokeColumnPermissionWithOptions(schema, name string, permission ObjectPermission, columns []string, principal string, opts PermissionOptions) error
RevokeColumnPermissionWithOptions revokes a column-level permission honouring opts — the CASCADE and GRANT OPTION FOR forms of RevokeColumnPermission.
func (*Database) RevokeColumnPermissionWithOptionsContext ¶ added in v0.0.8
func (d *Database) RevokeColumnPermissionWithOptionsContext(ctx context.Context, schema, name string, permission ObjectPermission, columns []string, principal string, opts PermissionOptions) error
RevokeColumnPermissionWithOptionsContext is the context-aware variant of RevokeColumnPermissionWithOptions.
func (*Database) RevokeDatabasePermission ¶ added in v0.0.4
RevokeDatabasePermission revokes a database-level permission from principal.
func (*Database) RevokeDatabasePermissionContext ¶ added in v0.0.4
func (d *Database) RevokeDatabasePermissionContext(ctx context.Context, permission, principal string) error
RevokeDatabasePermissionContext is the context-aware variant of RevokeDatabasePermission.
func (*Database) RevokeDatabasePermissionWithOptions ¶ added in v0.0.8
func (d *Database) RevokeDatabasePermissionWithOptions(permission, principal string, opts PermissionOptions) error
RevokeDatabasePermissionWithOptions revokes a database-level permission from principal, honouring opts.
func (*Database) RevokeDatabasePermissionWithOptionsContext ¶ added in v0.0.8
func (d *Database) RevokeDatabasePermissionWithOptionsContext(ctx context.Context, permission, principal string, opts PermissionOptions) error
RevokeDatabasePermissionWithOptionsContext is the context-aware variant of RevokeDatabasePermissionWithOptions.
func (*Database) RevokePermission ¶ added in v0.0.4
func (d *Database) RevokePermission(schema, name string, permission ObjectPermission, principal string) error
RevokePermission revokes permission on schema.name from principal.
func (*Database) RevokePermissionContext ¶ added in v0.0.4
func (d *Database) RevokePermissionContext(ctx context.Context, schema, name string, permission ObjectPermission, principal string) error
RevokePermissionContext is the context-aware variant of RevokePermission.
func (*Database) RevokePermissionWithOptions ¶ added in v0.0.8
func (d *Database) RevokePermissionWithOptions(schema, name string, permission ObjectPermission, principal string, opts PermissionOptions) error
RevokePermissionWithOptions revokes permission on schema.name from principal, honouring opts — the CASCADE and GRANT OPTION FOR forms of RevokePermission.
func (*Database) RevokePermissionWithOptionsContext ¶ added in v0.0.8
func (d *Database) RevokePermissionWithOptionsContext(ctx context.Context, schema, name string, permission ObjectPermission, principal string, opts PermissionOptions) error
RevokePermissionWithOptionsContext is the context-aware variant of RevokePermissionWithOptions.
func (*Database) RevokeSchemaPermission ¶ added in v0.0.5
func (d *Database) RevokeSchemaPermission(schemaName string, permission ObjectPermission, principal string) error
RevokeSchemaPermission revokes permission on a schema from principal.
func (*Database) RevokeSchemaPermissionContext ¶ added in v0.0.5
func (d *Database) RevokeSchemaPermissionContext(ctx context.Context, schemaName string, permission ObjectPermission, principal string) error
RevokeSchemaPermissionContext is the context-aware variant of RevokeSchemaPermission.
func (*Database) RevokeSchemaPermissionWithOptions ¶ added in v0.0.8
func (d *Database) RevokeSchemaPermissionWithOptions(schemaName string, permission ObjectPermission, principal string, opts PermissionOptions) error
RevokeSchemaPermissionWithOptions revokes permission on a schema from principal, honouring opts.
func (*Database) RevokeSchemaPermissionWithOptionsContext ¶ added in v0.0.8
func (d *Database) RevokeSchemaPermissionWithOptionsContext(ctx context.Context, schemaName string, permission ObjectPermission, principal string, opts PermissionOptions) error
RevokeSchemaPermissionWithOptionsContext is the context-aware variant of RevokeSchemaPermissionWithOptions.
func (*Database) RoleByName ¶ added in v0.0.5
func (d *Database) RoleByName(name string) (*DatabaseRole, error)
RoleByName returns a single database role by name, with its principal detail (SID, create/modify dates) filled in — DatabaseRolesContext leaves these out since Object Explorer's tree listing never needs them.
func (*Database) RoleByNameContext ¶ added in v0.0.5
RoleByNameContext is the context-aware variant of RoleByName.
func (*Database) RoleMemberSeq ¶ added in v0.0.6
func (d *Database) RoleMemberSeq(ctx context.Context, roleName string) iter.Seq2[*RoleMember, error]
RoleMemberSeq returns an iterator over a database role's members.
func (*Database) RoleMembers ¶ added in v0.0.5
func (d *Database) RoleMembers(roleName string) ([]*RoleMember, error)
RoleMembers returns the direct members of a database role, with each member's principal type — DatabaseRolesContext/RoleByNameContext only return member names, concatenated, with no type.
func (*Database) RoleMembersContext ¶ added in v0.0.5
RoleMembersContext is the context-aware variant of RoleMembers.
func (*Database) SchemaPermissionSeq ¶ added in v0.0.6
func (d *Database) SchemaPermissionSeq(ctx context.Context, schemaName string) iter.Seq2[*PermissionEntry, error]
SchemaPermissionSeq returns an iterator over a schema's explicit GRANT/DENY entries.
func (*Database) SchemaPermissions ¶ added in v0.0.5
func (d *Database) SchemaPermissions(schemaName string) ([]*PermissionEntry, error)
SchemaPermissions returns the GRANT/DENY entries recorded on SCHEMA::schemaName — SSMS's Schema Properties > Permissions page. This is the schema-scoped analog of Permissions: that one resolves its securable via OBJECT_ID(schema.name), which only works for table/view securables — a schema has no OBJECT_ID, so it needs its own query keyed on SCHEMA_ID instead.
func (*Database) SchemaPermissionsContext ¶ added in v0.0.5
func (d *Database) SchemaPermissionsContext(ctx context.Context, schemaName string) ([]*PermissionEntry, error)
SchemaPermissionsContext is the context-aware variant of SchemaPermissions.
func (*Database) SchemasContext ¶
SchemasContext is the context-aware variant of Schemas.
func (*Database) Search ¶ added in v0.0.4
func (d *Database) Search(pattern string) ([]*SearchResult, error)
Search finds tables, views, stored procedures, functions, and triggers whose name contains pattern (case-insensitivity follows the database's own collation), matching SSMS's Object Explorer Details search box.
func (*Database) SearchContext ¶ added in v0.0.4
SearchContext is the context-aware variant of Search.
func (*Database) SearchSeq ¶ added in v0.0.6
SearchSeq returns an iterator over every table, view, stored procedure, function, and trigger whose name contains pattern.
func (*Database) SecurityPolicies ¶
func (d *Database) SecurityPolicies() ([]*SecurityPolicy, error)
SecurityPolicies returns all security policies in the database.
func (*Database) SecurityPoliciesContext ¶ added in v0.0.5
func (d *Database) SecurityPoliciesContext(ctx context.Context) ([]*SecurityPolicy, error)
SecurityPoliciesContext is the context-aware variant of SecurityPolicies.
func (*Database) SecurityPolicySeq ¶ added in v0.0.5
SecurityPolicySeq returns an iterator over all security policies in the database.
func (*Database) SequenceSeq ¶
SequenceSeq returns an iterator over all sequences in the database.
func (*Database) SequencesContext ¶ added in v0.0.4
SequencesContext is the context-aware variant of Sequences.
func (*Database) SetChangeTracking ¶ added in v0.0.4
func (d *Database) SetChangeTracking(info ChangeTrackingInfo) error
SetChangeTracking enables, reconfigures, or disables change tracking for the database. info.RetentionUnit defaults to "DAYS" when empty.
func (*Database) SetChangeTrackingContext ¶ added in v0.0.4
func (d *Database) SetChangeTrackingContext(ctx context.Context, info ChangeTrackingInfo) error
SetChangeTrackingContext is the context-aware variant of SetChangeTracking.
func (*Database) SetCompatibilityLevel ¶
func (d *Database) SetCompatibilityLevel(level CompatibilityLevel) error
SetCompatibilityLevel changes the database compatibility level.
func (*Database) SetCompatibilityLevelContext ¶
func (d *Database) SetCompatibilityLevelContext(ctx context.Context, level CompatibilityLevel) error
SetCompatibilityLevelContext is the context-aware variant.
func (*Database) SetDatabaseOption ¶ added in v0.0.4
func (d *Database) SetDatabaseOption(opt DatabaseOption, value string) error
SetDatabaseOption changes one ALTER DATABASE ... SET option. value is the keyword or clause that follows the option name verbatim, e.g. "ON", "OFF", "CHECKSUM", "PARTIAL", "SNAPSHOT_ISOLATION" — see SQL Server's ALTER DATABASE SET reference for each option's accepted values.
func (*Database) SetDatabaseOptionContext ¶ added in v0.0.4
func (d *Database) SetDatabaseOptionContext(ctx context.Context, opt DatabaseOption, value string) error
SetDatabaseOptionContext is the context-aware variant of SetDatabaseOption.
func (*Database) SetDatabaseScopedConfig ¶ added in v0.0.5
SetDatabaseScopedConfig changes one database scoped configuration option. value is the keyword or literal that follows the option name verbatim, e.g. "ON", "OFF", "4" — see ALTER DATABASE SCOPED CONFIGURATION's reference for each option's accepted values. forSecondary applies the change to readable secondary replicas (FOR SECONDARY) instead of the primary.
func (*Database) SetDatabaseScopedConfigContext ¶ added in v0.0.5
func (d *Database) SetDatabaseScopedConfigContext(ctx context.Context, name, value string, forSecondary bool) error
SetDatabaseScopedConfigContext is the context-aware variant of SetDatabaseScopedConfig. Unlike ALTER DATABASE SET options (SetDatabaseOptionContext), ALTER DATABASE SCOPED CONFIGURATION is scoped to whichever database is current, so this runs through d.exec (USE first), not d.server.execContext.
func (*Database) SetDefaultFileGroup ¶ added in v0.0.4
SetDefaultFileGroup marks a filegroup as the database's default.
func (*Database) SetDefaultFileGroupContext ¶ added in v0.0.4
SetDefaultFileGroupContext is the context-aware variant of SetDefaultFileGroup.
func (*Database) SetExtendedProperty ¶ added in v0.0.4
func (d *Database) SetExtendedProperty(name, value string, level ExtendedPropertyLevel) error
SetExtendedProperty updates the value of an existing extended property. Fails if no property with this name exists at this level — see AddExtendedProperty to create one.
func (*Database) SetExtendedPropertyContext ¶ added in v0.0.4
func (d *Database) SetExtendedPropertyContext(ctx context.Context, name, value string, level ExtendedPropertyLevel) error
SetExtendedPropertyContext is the context-aware variant of SetExtendedProperty.
func (*Database) SetFileGroupReadOnly ¶ added in v0.0.4
SetFileGroupReadOnly sets or clears a filegroup's read-only flag.
func (*Database) SetFileGroupReadOnlyContext ¶ added in v0.0.4
func (d *Database) SetFileGroupReadOnlyContext(ctx context.Context, name string, readOnly bool) error
SetFileGroupReadOnlyContext is the context-aware variant of SetFileGroupReadOnly.
func (*Database) SetOffline ¶ added in v0.0.5
SetOffline takes the database offline.
func (*Database) SetOfflineContext ¶ added in v0.0.5
SetOfflineContext is the context-aware variant of SetOffline. Existing connections are rolled back immediately, matching SSMS's Object Explorer "Take Database Offline" behavior.
func (*Database) SetOnlineContext ¶ added in v0.0.5
SetOnlineContext is the context-aware variant of SetOnline.
func (*Database) SetOwner ¶ added in v0.0.4
SetOwner transfers database ownership to a new principal.
func (*Database) SetOwnerContext ¶ added in v0.0.4
SetOwnerContext is the context-aware variant of SetOwner.
func (*Database) SetQueryStoreOptions ¶ added in v0.0.5
func (d *Database) SetQueryStoreOptions(opts QueryStoreOptions) error
SetQueryStoreOptions turns Query Store on (reconfiguring it) or off.
func (*Database) SetQueryStoreOptionsContext ¶ added in v0.0.5
func (d *Database) SetQueryStoreOptionsContext(ctx context.Context, opts QueryStoreOptions) error
SetQueryStoreOptionsContext is the context-aware variant of SetQueryStoreOptions. Like SetRecoveryModelContext, this is an ALTER DATABASE statement naming the database explicitly, so it runs through d.server.execContext rather than d.exec.
func (*Database) SetReadOnly ¶
SetReadOnly sets the database to read-only or read-write.
func (*Database) SetReadOnlyContext ¶
SetReadOnlyContext is the context-aware variant.
func (*Database) SetRecoveryModel ¶
func (d *Database) SetRecoveryModel(model RecoveryModel) error
SetRecoveryModel changes the database recovery model.
func (*Database) SetRecoveryModelContext ¶
func (d *Database) SetRecoveryModelContext(ctx context.Context, model RecoveryModel) error
SetRecoveryModelContext is the context-aware variant.
func (*Database) SetTableChangeTracking ¶ added in v0.0.4
SetTableChangeTracking enables or disables change tracking on one table. trackColumns is ignored when enable is false.
func (*Database) SetTableChangeTrackingContext ¶ added in v0.0.4
func (d *Database) SetTableChangeTrackingContext(ctx context.Context, schema, name string, enable, trackColumns bool) error
SetTableChangeTrackingContext is the context-aware variant of SetTableChangeTracking.
func (*Database) SetUserAccess ¶ added in v0.0.5
SetUserAccess changes the database's user-access mode (MULTI_USER, SINGLE_USER, or RESTRICTED_USER — SSMS's Database Properties > Options "Restrict access" setting). Existing connections that would violate the new mode are rolled back immediately, matching SSMS's own behavior.
func (*Database) SetUserAccessContext ¶ added in v0.0.5
SetUserAccessContext is the context-aware variant of SetUserAccess.
func (*Database) SpaceUsedContext ¶
SpaceUsedContext is the context-aware variant of SpaceUsed.
func (*Database) StoredProcedureSeq ¶
StoredProcedureSeq returns an iterator over all stored procedures.
func (*Database) StoredProcedures ¶
func (d *Database) StoredProcedures() ([]*StoredProcedure, error)
StoredProcedures returns all stored procedures in the database.
func (*Database) StoredProceduresContext ¶
func (d *Database) StoredProceduresContext(ctx context.Context) ([]*StoredProcedure, error)
StoredProceduresContext is the context-aware variant of StoredProcedures.
func (*Database) SynonymSeq ¶ added in v0.0.5
SynonymSeq returns an iterator over all synonyms in the database.
func (*Database) SynonymsContext ¶ added in v0.0.4
SynonymsContext is the context-aware variant of Synonyms.
func (*Database) SystemCatalog ¶ added in v0.0.5
SystemCatalog returns a bulk snapshot of every catalog view in the "sys" schema (sys.tables, sys.columns, sys.objects, ...) — see SystemCatalogContext.
func (*Database) SystemCatalogContext ¶ added in v0.0.5
SystemCatalogContext is the context-aware variant of SystemCatalog. The "sys" schema's catalog views are defined identically in every database on a server, so a caller only needs to load this once per connection — any database works equally well as the query target, not just master.
Unlike CatalogContext, this queries sys.all_objects/sys.all_columns rather than sys.objects/sys.columns: the latter two, despite the generic names, only ever surface user-created objects (is_ms_shipped=1 rows are invisible through them) — sys.tables, sys.columns, sys.objects itself, and every other built-in catalog view only show up through the "all_" variants.
func (*Database) SystemFunctionSeq ¶ added in v0.0.5
SystemFunctionSeq returns an iterator over every system function in the "sys" schema.
func (*Database) SystemFunctions ¶ added in v0.0.5
func (d *Database) SystemFunctions() ([]*UserDefinedFunction, error)
SystemFunctions returns every system function SQL Server ships in the "sys" schema (sys.fn_listextendedproperty, ...) — see SystemFunctionsContext.
func (*Database) SystemFunctionsContext ¶ added in v0.0.5
func (d *Database) SystemFunctionsContext(ctx context.Context) ([]*UserDefinedFunction, error)
SystemFunctionsContext is the context-aware variant of SystemFunctions. Reads sys.all_objects rather than sys.objects for the same reason SystemViewsContext reads sys.all_objects instead of sys.views: shipped objects are invisible through the non-"all_" catalog views. Restricted to the same type set as UserDefinedFunctionsContext ('FN'/'TF'/'IF') — aggregate ('AF') and CLR scalar ('FS') functions are excluded, matching that same scope. The "sys" schema is identical in every database on a server, so this only needs loading once per connection.
func (*Database) SystemStoredProcedureSeq ¶ added in v0.0.5
SystemStoredProcedureSeq returns an iterator over every system stored procedure in the "sys" schema.
func (*Database) SystemStoredProcedures ¶ added in v0.0.5
func (d *Database) SystemStoredProcedures() ([]*StoredProcedure, error)
SystemStoredProcedures returns every system stored procedure SQL Server ships in the "sys" schema (sp_help, sp_who, ...) — see SystemStoredProceduresContext.
func (*Database) SystemStoredProceduresContext ¶ added in v0.0.5
func (d *Database) SystemStoredProceduresContext(ctx context.Context) ([]*StoredProcedure, error)
SystemStoredProceduresContext is the context-aware variant of SystemStoredProcedures. Reads sys.all_objects rather than sys.procedures for the same reason SystemViewsContext reads sys.all_objects instead of sys.views: shipped objects are invisible through the non-"all_" catalog views. Restricted to types 'P'/'PC' (SQL/CLR stored procedure), matching what sys.procedures itself documents — extended stored procedures ('X', e.g. xp_cmdshell) are a distinct object kind and excluded. The "sys" schema is identical in every database on a server, so this only needs loading once per connection.
func (*Database) SystemViewSeq ¶ added in v0.0.5
SystemViewSeq returns an iterator over every system catalog view in the "sys" schema.
func (*Database) SystemViews ¶ added in v0.0.5
SystemViews returns every catalog view SQL Server ships in the "sys" schema (sys.tables, sys.columns, sys.objects, ...) — see SystemViewsContext.
func (*Database) SystemViewsContext ¶ added in v0.0.5
SystemViewsContext is the context-aware variant of SystemViews. Unlike Views, this reads sys.all_objects/sys.all_sql_modules rather than sys.views/sys.sql_modules: the "sys." schema's own views are shipped objects (is_ms_shipped=1), invisible through the non-"all_" catalog views — same reasoning as SystemCatalogContext. The "sys" schema's catalog views are defined identically in every database on a server, so a caller only needs to load this once per connection.
func (*Database) TableByName ¶
TableByName returns a single table by schema and name using a direct query.
func (*Database) TableByNameContext ¶
TableByNameContext is the context-aware variant of TableByName.
func (*Database) TableChangeTracking ¶ added in v0.0.4
func (d *Database) TableChangeTracking() ([]*TableChangeTracking, error)
TableChangeTracking returns change tracking state for every user table in the database, whether or not tracking is actually enabled on it.
func (*Database) TableChangeTrackingContext ¶ added in v0.0.4
func (d *Database) TableChangeTrackingContext(ctx context.Context) ([]*TableChangeTracking, error)
TableChangeTrackingContext is the context-aware variant of TableChangeTracking.
func (*Database) TableChangeTrackingSeq ¶ added in v0.0.4
func (d *Database) TableChangeTrackingSeq(ctx context.Context) iter.Seq2[*TableChangeTracking, error]
TableChangeTrackingSeq returns an iterator over every user table's change tracking state.
func (*Database) TableRowCounts ¶ added in v0.0.7
TableRowCounts returns the row count of every user table in the database, keyed by object_id — Table.RowCount for all tables in a single round trip.
Use this over a loop of Table.RowCount whenever the caller wants more than a couple of tables: the per-table form costs one query (and one pooled connection) each. The filter and aggregate are the same, so the counts are identical either way — metadata counts from sys.partitions, which is what SSMS's object grids show, not a COUNT(*).
A table with no row in sys.partitions is absent from the map rather than present as 0; callers should treat a missing key as zero rows.
func (*Database) TableRowCountsContext ¶ added in v0.0.7
TableRowCountsContext is the context-aware variant of TableRowCounts.
func (*Database) TableSpaceUsedAll ¶ added in v0.0.7
func (d *Database) TableSpaceUsedAll() (map[int]*TableSpaceInfo, error)
TableSpaceUsedAll returns space usage for every user table in the database, keyed by object_id — the same breakdown Table.SpaceUsed gives for one table, for all of them in a single round trip.
Use this over a loop of Table.SpaceUsed whenever the caller wants more than a couple of tables: the per-table form costs one query (and one pooled connection) each, so a grid listing a few hundred tables is a few hundred round trips. The aggregate expressions and joins are the same, so the numbers are identical either way.
A table with no allocated pages at all has no row in sys.partitions to aggregate and is therefore absent from the map, not present with zeroes — callers should treat a missing key as "no space used".
func (*Database) TableSpaceUsedAllContext ¶ added in v0.0.7
TableSpaceUsedAllContext is the context-aware variant of TableSpaceUsedAll.
func (*Database) TablesBySchema ¶
TablesBySchema returns all tables in a specific schema.
func (*Database) TablesBySchemaContext ¶
TablesBySchemaContext is the context-aware variant of TablesBySchema.
func (*Database) TablesBySchemaSeq ¶ added in v0.0.6
TablesBySchemaSeq returns an iterator over every user table in the given schema.
func (*Database) TablesContext ¶
TablesContext is the context-aware variant of Tables.
func (*Database) TriggerSeq ¶ added in v0.0.6
TriggerSeq returns an iterator over every DML trigger in the database (as opposed to Table.TriggerSeq's single-table scope).
func (*Database) TriggersContext ¶
TriggersContext is the context-aware variant of Triggers.
func (*Database) UserByName ¶ added in v0.0.5
UserByName returns a single database user by name, with its SID and matching server login (if any) filled in — UsersContext leaves these out since Object Explorer's tree listing never needs them.
func (*Database) UserByNameContext ¶ added in v0.0.5
UserByNameContext is the context-aware variant of UserByName.
func (*Database) UserDefinedFunctionSeq ¶ added in v0.0.6
func (d *Database) UserDefinedFunctionSeq(ctx context.Context) iter.Seq2[*UserDefinedFunction, error]
UserDefinedFunctionSeq returns an iterator over all user-created functions (as opposed to SystemFunctionSeq's "sys" schema functions).
func (*Database) UserDefinedFunctions ¶
func (d *Database) UserDefinedFunctions() ([]*UserDefinedFunction, error)
UserDefinedFunctions returns all UDFs in the database.
func (*Database) UserDefinedFunctionsContext ¶
func (d *Database) UserDefinedFunctionsContext(ctx context.Context) ([]*UserDefinedFunction, error)
UserDefinedFunctionsContext is the context-aware variant.
func (*Database) UsersContext ¶
UsersContext is the context-aware variant of Users.
type DatabaseFile ¶
type DatabaseFile struct {
Name string
PhysicalName string
Size int64 // in KB
MaxSize int64 // in KB; -1 = unlimited
GrowthType string // "KB" | "PERCENT"
Growth int64
IsPrimaryFile bool
FileGroupName string
}
DatabaseFile represents a single data or log file.
type DatabaseFileInfo ¶ added in v0.0.4
type DatabaseFileInfo struct {
FileID int
Name string
PhysicalName string
Type string // "ROWS", "LOG", or "FILESTREAM" (sys.database_files.type_desc)
FileGroup string // "" for log files, which don't belong to one
State string // e.g. "ONLINE"
SizeKB int64
MaxSizeKB int64 // -1 = unlimited
GrowthKB int64 // 0 when IsPercentGrowth is true
GrowthPercent int // 0 when IsPercentGrowth is false
IsPercentGrowth bool
}
DatabaseFileInfo describes a single database file, including log files — unlike FileGroups/FileGroupsContext (database.go), which only sees files that belong to a filegroup and so omits the log. Sizes are normalized to KB (FileGroupsContext's MaxSize/Growth fields are not, for backward compatibility with existing callers).
type DatabaseFileSpec ¶ added in v0.0.4
type DatabaseFileSpec struct {
Name string
FileGroup string // ignored when Type is "LOG"
Type string // "LOG" adds a log file; anything else (including "") adds a data file
Path string
SizeKB int64
// GrowthKB and GrowthPercent are mutually exclusive; GrowthPercent
// wins if both are set. Leaving both zero omits FILEGROWTH (server
// default).
GrowthKB int64
GrowthPercent int
// MaxSizeKB: 0 omits MAXSIZE (server default), -1 means UNLIMITED,
// >0 is the cap in KB.
MaxSizeKB int64
}
DatabaseFileSpec describes a file to add via AddFile.
type DatabaseOption ¶ added in v0.0.4
type DatabaseOption string
DatabaseOption identifies one ALTER DATABASE ... SET option.
const ( DBOptAutoClose DatabaseOption = "AUTO_CLOSE" DBOptAutoShrink DatabaseOption = "AUTO_SHRINK" DBOptAutoCreateStatistics DatabaseOption = "AUTO_CREATE_STATISTICS" DBOptAutoUpdateStatistics DatabaseOption = "AUTO_UPDATE_STATISTICS" DBOptAutoUpdateStatisticsAsync DatabaseOption = "AUTO_UPDATE_STATISTICS_ASYNC" DBOptANSINullDefault DatabaseOption = "ANSI_NULL_DEFAULT" DBOptANSINulls DatabaseOption = "ANSI_NULLS" DBOptANSIPadding DatabaseOption = "ANSI_PADDING" DBOptANSIWarnings DatabaseOption = "ANSI_WARNINGS" DBOptArithAbort DatabaseOption = "ARITHABORT" DBOptConcatNullYieldsNull DatabaseOption = "CONCAT_NULL_YIELDS_NULL" DBOptNumericRoundAbort DatabaseOption = "NUMERIC_ROUNDABORT" DBOptQuotedIdentifier DatabaseOption = "QUOTED_IDENTIFIER" DBOptRecursiveTriggers DatabaseOption = "RECURSIVE_TRIGGERS" DBOptCursorCloseOnCommit DatabaseOption = "CURSOR_CLOSE_ON_COMMIT" DBOptCursorDefault DatabaseOption = "CURSOR_DEFAULT" DBOptTrustworthy DatabaseOption = "TRUSTWORTHY" DBOptPageVerify DatabaseOption = "PAGE_VERIFY" DBOptContainment DatabaseOption = "CONTAINMENT" DBOptSnapshotIsolation DatabaseOption = "ALLOW_SNAPSHOT_ISOLATION" DBOptReadCommittedSnapshot DatabaseOption = "READ_COMMITTED_SNAPSHOT" )
type DatabaseOptions ¶ added in v0.0.4
type DatabaseOptions struct {
Owner string
PageVerify string // e.g. "CHECKSUM", "TORN_PAGE_DETECTION", "NONE"
UserAccess string // "MULTI_USER", "SINGLE_USER", "RESTRICTED_USER"
Containment string // "NONE", "PARTIAL"
DefaultCursor string // "LOCAL" or "GLOBAL"
SnapshotIsolation string // e.g. "OFF", "ON"
AutoClose bool
AutoShrink bool
AutoCreateStats bool
AutoUpdateStats bool
AutoUpdateStatsAsync bool
ANSINullDefault bool
ANSINulls bool
ANSIPadding bool
ANSIWarnings bool
ArithAbort bool
ConcatNullYieldsNull bool
NumericRoundAbort bool
QuotedIdentifier bool
RecursiveTriggers bool
CursorCloseOnCommit bool
ReadCommittedSnapshot bool
IsTrustworthy bool
IsBrokerEnabled bool
IsEncrypted bool
}
DatabaseOptions holds the ALTER DATABASE SET options and related flags from sys.databases that aren't already covered by Database's own cached fields (RecoveryModel, CompatibilityLevel, Collation, IsReadOnly).
type DatabasePermissionEntry ¶ added in v0.0.4
type DatabasePermissionEntry struct {
Principal string
PrincipalType string // e.g. "DATABASE_ROLE", "SQL_USER"
Grantor string
Permission string // e.g. "CONNECT", "CREATE TABLE", "ALTER"
State string // "GRANT", "GRANT_WITH_GRANT_OPTION", "DENY"
}
DatabasePermissionEntry is one GRANT/DENY entry recorded at database scope, as reported by sys.database_permissions — SSMS's Database Properties > Permissions page.
type DatabaseRole ¶
type DatabaseRole struct {
Name string
ID int
IsFixedRole bool
Owner string
Members []string
SID []byte
CreateDate time.Time
ModifyDate time.Time
// contains filtered or unexported fields
}
DatabaseRole represents a database-level role.
func (*DatabaseRole) ChangeOwner ¶ added in v0.0.5
func (r *DatabaseRole) ChangeOwner(newOwner string) error
ChangeOwner transfers ownership of the database role to a new principal.
func (*DatabaseRole) ChangeOwnerContext ¶ added in v0.0.5
func (r *DatabaseRole) ChangeOwnerContext(ctx context.Context, newOwner string) error
ChangeOwnerContext is the context-aware variant of ChangeOwner.
func (*DatabaseRole) Rename ¶ added in v0.0.5
func (r *DatabaseRole) Rename(newName string) error
Rename changes the database role's name.
func (*DatabaseRole) RenameContext ¶ added in v0.0.5
func (r *DatabaseRole) RenameContext(ctx context.Context, newName string) error
RenameContext is the context-aware variant of Rename.
type DatabaseScopedConfig ¶ added in v0.0.5
type DatabaseScopedConfig struct {
ID int
Name string
Value string
ValueForSecondary string
IsValueDefault bool
}
DatabaseScopedConfig mirrors one row of sys.database_scoped_configurations. Value and ValueForSecondary are the raw CAST(... AS NVARCHAR) text SQL Server reports for that option's sql_variant column — boolean-style options render as "0"/"1" this way, not "OFF"/"ON", while enum-style options like ELEVATE_ONLINE render their keyword directly (e.g. "OFF"). Callers that know an option is boolean should compare against "1", not "ON".
type Dependency ¶ added in v0.0.4
type Dependency struct {
Schema string
Name string
TypeDesc string // e.g. "USER_TABLE", "VIEW", "SQL_STORED_PROCEDURE"
IsSchemaBound bool
}
Dependency is one edge in an object dependency graph, as reported by sys.sql_expression_dependencies — e.g. a view referencing a table, or a stored procedure referencing a function.
type DiskVolumeInfo ¶ added in v0.0.5
type DiskVolumeInfo struct {
// MountPoint is the drive letter (Windows) or mount path (Linux). Some
// hosts — e.g. a containerized Linux instance without a distinct OS
// volume — report this as empty.
MountPoint string
// VolumeName is the OS volume label, also sometimes empty.
VolumeName string
// SamplePath is one database file's path stored on this volume, for
// display when MountPoint and VolumeName are both empty.
SamplePath string
TotalMB float64
AvailableMB float64
}
DiskVolumeInfo describes free/total space for one storage volume backing at least one of the server's database files, as reported by sys.dm_os_volume_stats — a DMV SQL Server exposes identically on Windows and Linux, so this is usable regardless of the host OS.
type EffectivePermission ¶ added in v0.0.8
type EffectivePermission struct {
// Entity is the securable the permission applies to, as
// fn_my_permissions names it — "database", "server", or the
// schema-qualified object name.
Entity string
// Subentity is the column name for a column-level permission, empty
// otherwise. Asking about an object reports both: the object-level rows
// with an empty Subentity, then one row per column that carries a
// column-level permission of its own.
Subentity string
// Permission is the permission name, e.g. "SELECT", "VIEW DEFINITION".
Permission string
}
EffectivePermission is one permission a principal effectively holds on a securable, as reported by fn_my_permissions. Unlike a PermissionEntry it is not an explicit GRANT/DENY row: role membership, ownership, and permissions inherited from a wider scope (a schema grant covering a table, CONTROL implying everything below it) are all already resolved into it, and anything DENY takes away is simply absent.
type ErrorLogEntry ¶
ErrorLogEntry represents one row returned by xp_readerrorlog.
type ExecutionPlan ¶ added in v0.0.4
type ExecutionPlan struct {
// XML is the plan in SQL Server's "Showplan XML" format — the same
// document SSMS parses to draw its graphical plan.
XML string
}
ExecutionPlan holds one captured execution plan.
type ExtendedProperty ¶
ExtendedProperty mirrors a row from sys.extended_properties.
type ExtendedPropertyLevel ¶
type ExtendedPropertyLevel struct {
Level0Type string // e.g. "SCHEMA"
Level0Name string
Level1Type string // e.g. "TABLE"
Level1Name string
Level2Type string // e.g. "COLUMN"
Level2Name string
}
ExtendedPropertyLevel identifies the object level for an extended property.
type FileGroup ¶
type FileGroup struct {
Name string
IsDefault bool
IsReadOnly bool
Files []DatabaseFile
}
FileGroup represents a SQL Server filegroup.
type FileModify ¶ added in v0.0.4
type FileModify struct {
NewName string
SizeKB int64
GrowthKB int64
GrowthPercent int
MaxSizeKB int64 // -1 = UNLIMITED
}
FileModify holds the fields to change on an existing file via AlterFile. Zero-valued fields are left unchanged; NewName renames the file.
type ForeignKey ¶
type ForeignKey struct {
Name string
Columns []string
ReferencedTable string
ReferencedSchema string
ReferencedColumns []string
DeleteAction string // NO_ACTION, CASCADE, SET_NULL, SET_DEFAULT
UpdateAction string
IsDisabled bool
IsNotForReplication bool
}
ForeignKey mirrors Microsoft.SqlServer.Management.Smo.ForeignKey.
type Index ¶
type Index struct {
Name string
IndexID int
Type IndexType
IsClustered bool
IsUnique bool
IsPrimaryKey bool
IsUniqueConstraint bool
IsDisabled bool
FillFactor int
IsPadded bool
IgnoreDupKey bool
AllowRowLocks bool
AllowPageLocks bool
DataCompression string
KeyColumns []IndexColumn
IncludedColumns []IndexColumn
FilterDefinition string
}
Index mirrors Microsoft.SqlServer.Management.Smo.Index.
func (*Index) DisableContext ¶
DisableContext is the context-aware variant of Disable.
func (*Index) DropContext ¶
DropContext is the context-aware variant of Drop.
func (*Index) EnableContext ¶ added in v0.0.6
EnableContext is the context-aware variant of Enable.
func (*Index) Fragmentation ¶ added in v0.0.6
func (idx *Index) Fragmentation(t *Table, mode string) (*IndexFragmentation, error)
Fragmentation returns fragmentation and page-density statistics for this index alone — the single-index analog of Table.FragmentationStats, used by Index Properties' Fragmentation page. mode follows Table.FragmentationStats's (LIMITED, SAMPLED, or DETAILED); page density is only populated by SAMPLED or DETAILED (LIMITED always reports 0, same as the underlying DMV).
func (*Index) FragmentationContext ¶ added in v0.0.6
func (idx *Index) FragmentationContext(ctx context.Context, t *Table, mode string) (*IndexFragmentation, error)
FragmentationContext is the context-aware variant of Fragmentation.
func (*Index) Rebuild ¶
Rebuild rebuilds the index (ALTER INDEX ... REBUILD). Pass fillFactor=0 to keep the existing fill factor.
func (*Index) RebuildContext ¶
RebuildContext is the context-aware variant of Rebuild.
func (*Index) RebuildWithOptions ¶ added in v0.0.6
func (idx *Index) RebuildWithOptions(t *Table, fillFactor int, padIndex bool, dataCompression string) error
RebuildWithOptions rebuilds the index with an explicit fill factor, pad index setting, and data compression (ALTER INDEX ... REBUILD WITH) — the only way to change these three, since none is a plain ALTER INDEX SET option. Pass dataCompression="" to leave compression unspecified (keeps the index's current setting).
func (*Index) RebuildWithOptionsContext ¶ added in v0.0.6
func (idx *Index) RebuildWithOptionsContext(ctx context.Context, t *Table, fillFactor int, padIndex bool, dataCompression string) error
RebuildWithOptionsContext is the context-aware variant of RebuildWithOptions.
func (*Index) Rename ¶ added in v0.0.6
Rename renames the index using sp_rename — also the mechanism for renaming a PRIMARY KEY or UNIQUE constraint, since its name is the backing index's name in sys.indexes.
func (*Index) RenameContext ¶ added in v0.0.6
RenameContext is the context-aware variant of Rename.
func (*Index) Reorganize ¶
Reorganize reorganizes the index (ALTER INDEX ... REORGANIZE).
func (*Index) ReorganizeContext ¶
ReorganizeContext is the context-aware variant of Reorganize.
func (*Index) SetIncludedColumns ¶ added in v0.0.6
SetIncludedColumns replaces the index's included (non-key) columns. Changing included columns isn't a plain ALTER — it requires recreating the index, so this reissues a full CREATE INDEX ... WITH (DROP_EXISTING = ON) from idx's own key columns, uniqueness, type, and filter, with columns as the new INCLUDE list.
func (*Index) SetIncludedColumnsContext ¶ added in v0.0.6
SetIncludedColumnsContext is the context-aware variant of SetIncludedColumns.
func (*Index) SetLockOptions ¶ added in v0.0.6
SetLockOptions applies just the lock-granularity SET options (ALTER INDEX ... SET (ALLOW_ROW_LOCKS = .., ALLOW_PAGE_LOCKS = ..)) — unlike SetOptions, this never touches IGNORE_DUP_KEY, which SQL Server rejects outright on an index backing a PRIMARY KEY or UNIQUE constraint ("Cannot use index option ignore_dup_key to alter index '...' as it enforces a primary or unique constraint").
func (*Index) SetLockOptionsContext ¶ added in v0.0.6
func (idx *Index) SetLockOptionsContext(ctx context.Context, t *Table, allowRowLocks, allowPageLocks bool) error
SetLockOptionsContext is the context-aware variant of SetLockOptions.
func (*Index) SetOptions ¶ added in v0.0.6
SetOptions applies the index's SET-able runtime options (ALTER INDEX ... SET). Fill factor, pad index, and data compression only take effect on a rebuild — see RebuildWithOptions for those.
func (*Index) SetOptionsContext ¶ added in v0.0.6
func (idx *Index) SetOptionsContext(ctx context.Context, t *Table, ignoreDupKey, allowRowLocks, allowPageLocks bool) error
SetOptionsContext is the context-aware variant of SetOptions.
func (*Index) StorageInfo ¶ added in v0.0.6
func (idx *Index) StorageInfo(t *Table) (*IndexStorageInfo, error)
StorageInfo returns filegroup/partitioning and space usage for this index.
func (*Index) StorageInfoContext ¶ added in v0.0.6
StorageInfoContext is the context-aware variant of StorageInfo.
func (*Index) UpdateStatistics ¶ added in v0.0.6
UpdateStatistics updates the statistics object tied to this index (UPDATE STATISTICS table (index) — every index has an implicit statistics object with the same name).
type IndexAllocationUnit ¶ added in v0.0.6
IndexAllocationUnit is one row of an index's allocation-unit space breakdown (IN_ROW_DATA, LOB_DATA, ROW_OVERFLOW_DATA).
type IndexColumn ¶
IndexColumn represents one column in an index.
type IndexColumnDef ¶
IndexColumnDef describes one key column for a new index.
type IndexFragmentation ¶
type IndexFragmentation struct {
IndexName string
IndexID int
AvgFragmentationPct float64
PageCount int64
FragmentCount int64
AvgPageSpaceUsedPct float64
}
IndexFragmentation holds fragmentation statistics for one index. AvgPageSpaceUsedPct is only populated when the DMV ran in SAMPLED or DETAILED mode (see Index.Fragmentation's mode parameter); Table.FragmentationStats's own LIMITED-mode query leaves it zero, matching the underlying DMV.
type IndexStorageInfo ¶ added in v0.0.6
type IndexStorageInfo struct {
FileGroup string
PartitionScheme string
PartitionColumn string
RowCount int64
UsedKB int64
ReservedKB int64
AvgRecordSize float64
Allocations []IndexAllocationUnit
}
IndexStorageInfo holds an index's filegroup/partitioning and space usage — SSMS's Index Properties > Storage page.
type IndexType ¶
type IndexType string
IndexType represents the type of an index.
const ( IndexTypeClustered IndexType = "CLUSTERED" IndexTypeNonClustered IndexType = "NONCLUSTERED" IndexTypeXML IndexType = "XML" IndexTypeSpatial IndexType = "SPATIAL" IndexTypeColumnStore IndexType = "COLUMNSTORE" IndexTypeClusteredColumnStore IndexType = "CLUSTERED COLUMNSTORE" )
The values match sys.indexes.type_desc, except IndexTypeColumnStore, which predates IndexTypeClusteredColumnStore and keeps its original spelling. A type_desc with no constant here is carried through verbatim (see Table.IndexesContext), so Type is never empty for an index that exists.
func (IndexType) IsColumnStore ¶ added in v0.0.7
IsColumnStore reports whether t is either columnstore index type.
type Job ¶
type Job struct {
JobID string
Name string
Description string
IsEnabled bool
Category string
OwnerLoginName string
DateCreated time.Time
DateModified time.Time
StartStepID int
DeleteLevel NotifyLevel
NotifyLevelEmail NotifyLevel
// NotifyEmailOperatorName is "" if no operator is configured to be
// emailed on job completion.
NotifyEmailOperatorName string
LastRunDate time.Time
LastRunOutcome JobOutcome
LastRunDuration time.Duration
NextRunDate time.Time
CurrentState JobState
// contains filtered or unexported fields
}
Job mirrors a row in msdb.dbo.sysjobs together with its latest activity.
func (*Job) AddSchedule ¶
func (j *Job) AddSchedule(req JobScheduleRequest) error
AddSchedule attaches a schedule to the job.
func (*Job) AddScheduleContext ¶
func (j *Job) AddScheduleContext(ctx context.Context, req JobScheduleRequest) error
AddScheduleContext is the context-aware variant of AddSchedule.
func (*Job) AddStep ¶
func (j *Job) AddStep(req JobStepRequest) error
AddStep adds a T-SQL or other subsystem step to the job.
func (*Job) AddStepContext ¶
func (j *Job) AddStepContext(ctx context.Context, req JobStepRequest) error
AddStepContext is the context-aware variant of AddStep.
func (*Job) AttachSchedule ¶ added in v0.0.6
AttachSchedule attaches an existing shared schedule to the job — as opposed to AddSchedule, which creates a brand-new schedule and attaches it in one step.
func (*Job) AttachScheduleContext ¶ added in v0.0.6
AttachScheduleContext is the context-aware variant of AttachSchedule.
func (*Job) DetachSchedule ¶ added in v0.0.6
DetachSchedule detaches a schedule from the job without deleting the schedule itself (it may still be shared by other jobs).
func (*Job) DetachScheduleContext ¶ added in v0.0.6
DetachScheduleContext is the context-aware variant of DetachSchedule.
func (*Job) DisableContext ¶ added in v0.0.6
DisableContext is the context-aware variant of Disable.
func (*Job) DropContext ¶
DropContext is the context-aware variant of Drop.
func (*Job) EnableContext ¶ added in v0.0.6
EnableContext is the context-aware variant of Enable.
func (*Job) History ¶
func (j *Job) History(limit int) ([]*JobHistoryEntry, error)
History returns the execution history (most recent first). Pass limit=0 to use the default of 100 rows.
func (*Job) HistoryContext ¶
HistoryContext is the context-aware variant of History.
func (*Job) HistorySeq ¶ added in v0.0.6
HistorySeq returns an iterator over this job's most recent history entries, up to limit.
func (*Job) RenameContext ¶ added in v0.0.6
RenameContext is the context-aware variant of Rename.
func (*Job) ScheduleSeq ¶ added in v0.0.6
ScheduleSeq returns an iterator over the schedules attached to this job.
func (*Job) SchedulesContext ¶ added in v0.0.6
SchedulesContext is the context-aware variant of Schedules.
func (*Job) SetCategory ¶ added in v0.0.6
SetCategory reassigns the job's category.
func (*Job) SetCategoryContext ¶ added in v0.0.6
SetCategoryContext is the context-aware variant of SetCategory.
func (*Job) SetDeleteLevel ¶ added in v0.0.6
func (j *Job) SetDeleteLevel(level NotifyLevel) error
SetDeleteLevel sets the job's automatic-delete condition.
func (*Job) SetDeleteLevelContext ¶ added in v0.0.6
func (j *Job) SetDeleteLevelContext(ctx context.Context, level NotifyLevel) error
SetDeleteLevelContext is the context-aware variant of SetDeleteLevel.
func (*Job) SetDescription ¶ added in v0.0.6
SetDescription changes the job's description.
func (*Job) SetDescriptionContext ¶ added in v0.0.6
SetDescriptionContext is the context-aware variant of SetDescription.
func (*Job) SetEmailNotify ¶ added in v0.0.6
func (j *Job) SetEmailNotify(operatorName string, level NotifyLevel) error
SetEmailNotify sets which operator is emailed on job completion, and under what condition. operatorName == "" leaves the currently configured operator unchanged (SQL Server has no documented "clear to none" value for sp_update_job's @notify_email_operator_name; pair with NotifyNever to stop emailing without needing to clear it).
func (*Job) SetEmailNotifyContext ¶ added in v0.0.6
func (j *Job) SetEmailNotifyContext(ctx context.Context, operatorName string, level NotifyLevel) error
SetEmailNotifyContext is the context-aware variant of SetEmailNotify.
func (*Job) SetOwnerContext ¶ added in v0.0.6
SetOwnerContext is the context-aware variant of SetOwner.
func (*Job) SetStartStep ¶ added in v0.0.6
SetStartStep changes which step the job begins execution from.
func (*Job) SetStartStepContext ¶ added in v0.0.6
SetStartStepContext is the context-aware variant of SetStartStep.
func (*Job) StartContext ¶
StartContext is the context-aware variant of Start.
func (*Job) StepSeq ¶ added in v0.0.6
StepSeq returns an iterator over a job's steps, in step_id order.
func (*Job) StepsContext ¶
StepsContext is the context-aware variant of Steps.
type JobHistoryEntry ¶
type JobHistoryEntry struct {
// JobName is only populated by Server.JobHistory (the cross-job
// history query); it's left "" by Job.History, whose caller already
// knows which job it asked about.
JobName string
RunDate time.Time
Duration time.Duration
Outcome JobOutcome
Message string
StepID int
StepName string
}
JobHistoryEntry represents one row from msdb.dbo.sysjobhistory.
type JobNotificationRef ¶ added in v0.0.6
type JobNotificationRef struct {
JobName string
Level NotifyLevel
}
JobNotificationRef describes one job configured to email an operator on completion.
type JobOutcome ¶
type JobOutcome int
JobOutcome represents the last run outcome for a job or step.
const ( JobOutcomeFailed JobOutcome = 0 JobOutcomeSucceeded JobOutcome = 1 JobOutcomeRetried JobOutcome = 2 JobOutcomeCancelled JobOutcome = 3 JobOutcomeUnknown JobOutcome = 5 )
type JobScheduleRequest ¶
type JobScheduleRequest struct {
Name string
Enabled bool
// FreqType: 1=once, 4=daily, 8=weekly, 16=monthly, 64=when agent starts.
FreqType int
FreqInterval int
// FreqSubdayType: 1=once, 2=seconds, 4=minutes, 8=hours.
FreqSubdayType int
FreqSubdayInterval int
// ActiveStartTime and ActiveEndTime are HHMMSS integers, e.g. 23000 = 02:30:00.
ActiveStartTime int
ActiveEndTime int
}
JobScheduleRequest describes a schedule to attach to a job.
type JobState ¶
type JobState int
JobState mirrors the current_execution_status values in msdb.dbo.sysjobactivity.
type JobStep ¶
type JobStep struct {
StepID int
Name string
Subsystem string // "TSQL", "CmdExec", "SSIS", etc.
Command string
// Database is only meaningful for TSQL steps.
Database string
OnSuccessAction int
// OnSuccessStepID is the target step_id when OnSuccessAction is
// "go to step N" (4); otherwise unused.
OnSuccessStepID int
OnFailAction int
// OnFailStepID is the target step_id when OnFailAction is "go to
// step N" (4); otherwise unused.
OnFailStepID int
LastRunOutcome JobOutcome
// LastRunDate is when the step last ran, from sysjobsteps'
// last_run_date/last_run_time integer pair. Zero when the step has never
// run — test it with IsZero(), not against a sentinel date.
LastRunDate time.Time
// LastRunDuration is sysjobsteps.last_run_duration verbatim: an HHMMSS
// integer, not a count of seconds (10230 is 1h 02m 30s). LastRunElapsed
// is the same value decoded, and is what display code should use.
LastRunDuration int
LastRunElapsed time.Duration
RetryAttempts int
RetryInterval int
OutputFileName string
// Flags is the raw sysjobsteps.flags bitmask (append-to-output-file,
// log-to-table, include-step-output-in-history, ...). See Microsoft's
// sp_add_jobstep documentation for bit meanings; gosmo round-trips it
// as-is rather than decoding it into named booleans.
Flags int
// contains filtered or unexported fields
}
JobStep represents one step of an agent job.
func (*JobStep) DeleteContext ¶ added in v0.0.6
DeleteContext is the context-aware variant of Delete.
func (*JobStep) Update ¶ added in v0.0.6
func (s *JobStep) Update(req JobStepRequest) error
Update replaces the step's definition via sp_update_jobstep.
func (*JobStep) UpdateContext ¶ added in v0.0.6
func (s *JobStep) UpdateContext(ctx context.Context, req JobStepRequest) error
UpdateContext is the context-aware variant of Update.
type JobStepRequest ¶
type JobStepRequest struct {
Name string
Subsystem string // "TSQL" is the most common value
Command string
// Database is only used for TSQL steps.
//
// Empty means "leave the step's own database alone" on an update, not
// "clear it": sp_update_jobstep accepts N” without error and changes
// nothing, so JobStep.UpdateContext omits @database_name entirely rather
// than sending a value that would be silently ignored. On AddStep an
// empty value likewise sends no @database_name, and the server applies
// its default. There is no way to null the column through this type,
// because msdb offers none.
Database string
// OnSuccessAction: 1=quit success, 2=quit fail, 3=go to next step, 4=go to step N.
OnSuccessAction int
// OnSuccessStepID is the target step_id when OnSuccessAction is 4.
OnSuccessStepID int
OnFailAction int
// OnFailStepID is the target step_id when OnFailAction is 4.
OnFailStepID int
RetryAttempts int
// RetryInterval is in minutes.
RetryInterval int
// OutputFileName is sent on every update, empty or not — unlike
// Database, whose empty value means "keep". @output_file_name does
// honour N”: it nulls the column, so blanking this field is how a
// caller's form clears a step's output file. Two string fields of this
// struct therefore read an empty value differently, because msdb does.
OutputFileName string
}
JobStepRequest describes a step to add to, or replace the definition of (see JobStep.Update), a job.
type KerberosOptions ¶ added in v0.0.4
type KerberosOptions struct {
// ConfigFile is the path to krb5.conf. Defaults to $KRB5_CONFIG then
// /etc/krb5.conf. The file must exist for any Kerberos login.
ConfigFile string
// CredCacheFile is the path to a credential cache produced by "kinit".
// Defaults to $KRB5CCNAME. Use this for single sign-on.
CredCacheFile string
// KeytabFile is the path to a keytab holding the client's long-term key,
// for unattended logins. Requires User and Realm. Defaults to
// $KRB5_KTNAME or the configured default client keytab.
KeytabFile string
// Realm is the Kerberos realm, e.g. "CONTOSO.COM". When empty it is
// taken from a "user@REALM" User, then from the krb5.conf default realm.
Realm string
// DNSLookupKDC, when non-nil, overrides whether KDCs are located via DNS
// SRV records. The driver defaults to true.
DNSLookupKDC *bool
// UDPPreferenceLimit caps the message size sent over UDP before TCP is
// used. Zero leaves the driver default (1, i.e. effectively always TCP).
UDPPreferenceLimit int
}
KerberosOptions configures Kerberos authentication for AuthWindows on non-Windows hosts (and on Windows when set explicitly, in preference to native SSPI). Every field is optional: with all left zero the driver uses the ambient Kerberos setup — /etc/krb5.conf (or $KRB5_CONFIG) and the credential cache from a prior "kinit" ($KRB5CCNAME or the default cache) — which is the usual single-sign-on flow on a domain-joined Linux host.
The three credential sources are mutually exclusive and tried in this order of precedence by the driver: an explicit KeytabFile (with User and Realm), then a CredCacheFile, then User + Password (with Realm). When none is set, the credential cache is discovered from the environment.
type Language ¶ added in v0.0.4
Language mirrors a row from sys.syslanguages — used to populate the server's "Default language" and a Login's "Default language" dropdowns.
type LinkedServer ¶
type LinkedServer struct {
Name string
Product string
Provider string
DataSource string
IsRemote bool
}
LinkedServer represents a linked server definition.
type Login ¶
type Login struct {
Name string
SID []byte
LoginType string // "SQL_LOGIN", "WINDOWS_LOGIN", "WINDOWS_GROUP"
IsDisabled bool
DefaultDatabase string
CreateDate time.Time
ModifyDate time.Time
// contains filtered or unexported fields
}
Login represents a SQL Server server-level login.
func (*Login) AddServerRoleMember ¶
AddServerRoleMember adds this login to a server role.
func (*Login) AddServerRoleMemberContext ¶
AddServerRoleMemberContext is the context-aware variant of AddServerRoleMember.
func (*Login) ChangePassword ¶
ChangePassword changes the login's password.
func (*Login) ChangePasswordContext ¶
ChangePasswordContext changes the login's password.
Security: the password is quoted via nStringLiteral (N'...', doubling any embedded quote) rather than interpolated raw. HASHED is deliberately not used — it tells SQL Server the value is already one of its own password-hash formats, not cleartext, so passing a hex encoding of the cleartext under HASHED either fails outright or creates a login nothing can ever authenticate as.
func (*Login) ChangePasswordWithOptions ¶ added in v0.0.4
ChangePasswordWithOptions changes the login's password with the same quoted-literal encoding ChangePassword uses, plus MUST_CHANGE (force a password change at next login) and UNLOCK (clear a lockout).
func (*Login) ChangePasswordWithOptionsContext ¶ added in v0.0.4
func (l *Login) ChangePasswordWithOptionsContext(ctx context.Context, newPassword string, mustChange, unlock bool) error
ChangePasswordWithOptionsContext is the context-aware variant of ChangePasswordWithOptions.
func (*Login) Details ¶ added in v0.0.4
func (l *Login) Details() (*LoginDetails, error)
Details returns the login's password-policy and status information.
func (*Login) DetailsContext ¶ added in v0.0.4
func (l *Login) DetailsContext(ctx context.Context) (*LoginDetails, error)
DetailsContext is the context-aware variant of Details.
func (*Login) DisableContext ¶
DisableContext is the context-aware variant of Disable.
func (*Login) DropContext ¶ added in v0.0.6
DropContext is the context-aware variant of Drop.
func (*Login) EnableContext ¶
EnableContext is the context-aware variant of Enable.
func (*Login) MapCredential ¶ added in v0.0.4
MapCredential maps a server credential to the login.
func (*Login) MapCredentialContext ¶ added in v0.0.4
MapCredentialContext is the context-aware variant of MapCredential.
func (*Login) MapToDatabase ¶ added in v0.0.4
MapToDatabase creates a user for this login in the named database (CREATE USER ... FOR LOGIN).
func (*Login) MapToDatabaseContext ¶ added in v0.0.4
func (l *Login) MapToDatabaseContext(ctx context.Context, dbName, userName, defaultSchema string) error
MapToDatabaseContext is the context-aware variant of MapToDatabase.
func (*Login) RemoveServerRoleMember ¶
RemoveServerRoleMember removes this login from a server role.
func (*Login) RemoveServerRoleMemberContext ¶
RemoveServerRoleMemberContext is the context-aware variant of RemoveServerRoleMember.
func (*Login) RenameContext ¶ added in v0.0.4
RenameContext is the context-aware variant of Rename.
func (*Login) SetDefaultDatabase ¶ added in v0.0.4
SetDefaultDatabase changes the login's default database.
func (*Login) SetDefaultDatabaseContext ¶ added in v0.0.4
SetDefaultDatabaseContext is the context-aware variant of SetDefaultDatabase.
func (*Login) SetDefaultLanguage ¶ added in v0.0.4
SetDefaultLanguage changes the login's default language.
func (*Login) SetDefaultLanguageContext ¶ added in v0.0.4
SetDefaultLanguageContext is the context-aware variant of SetDefaultLanguage.
func (*Login) SetPasswordPolicy ¶ added in v0.0.4
SetPasswordPolicy sets the login's CHECK_POLICY and CHECK_EXPIRATION flags. SQL Server rejects checkExpiration=true with checkPolicy=false — surfaced as the returned error, not pre-validated here.
func (*Login) SetPasswordPolicyContext ¶ added in v0.0.4
func (l *Login) SetPasswordPolicyContext(ctx context.Context, checkPolicy, checkExpiration bool) error
SetPasswordPolicyContext is the context-aware variant of SetPasswordPolicy.
func (*Login) UnmapCredential ¶ added in v0.0.4
UnmapCredential removes a credential mapping from the login.
func (*Login) UnmapCredentialContext ¶ added in v0.0.4
UnmapCredentialContext is the context-aware variant of UnmapCredential.
func (*Login) UnmapFromDatabase ¶ added in v0.0.4
UnmapFromDatabase drops this login's mapped user in the named database.
func (*Login) UnmapFromDatabaseContext ¶ added in v0.0.4
UnmapFromDatabaseContext is the context-aware variant of UnmapFromDatabase.
func (*Login) UserMappingSeq ¶ added in v0.0.4
UserMappingSeq returns an iterator over every database this login is mapped into.
func (*Login) UserMappings ¶ added in v0.0.4
func (l *Login) UserMappings() ([]*LoginUserMapping, error)
UserMappings returns every database this login has a mapped user in. Only mapped databases are included — combine with Server.Databases to build a full "all databases, mapped or not" view. Databases that are offline, or that the login can't currently reach, are skipped rather than failing the whole scan (SSMS's own User Mapping page behaves the same way). A cancelled context is not skipped — it ends the scan and is returned.
func (*Login) UserMappingsContext ¶ added in v0.0.4
func (l *Login) UserMappingsContext(ctx context.Context) ([]*LoginUserMapping, error)
UserMappingsContext is the context-aware variant of UserMappings.
type LoginDetails ¶ added in v0.0.4
type LoginDetails struct {
IsLocked bool
IsExpired bool
MustChangePassword bool
IsPolicyChecked bool
IsExpirationChecked bool
PasswordLastSet time.Time
// LastLogin is best-effort: it reflects the most recent session found
// in sys.dm_exec_sessions, which only holds currently-connected (or
// very recently disconnected) sessions, not full login history. It is
// the zero Time if no matching session is currently visible.
LastLogin time.Time
BadPasswordCount int
// BadPasswordTime is the last failed-login attempt time, or the zero
// Time if none is recorded.
BadPasswordTime time.Time
DefaultLanguage string
CredentialName string
// ConnectSQLState is "GRANT", "DENY", or "" (default/unset) for the
// login's explicit CONNECT SQL server permission.
ConnectSQLState string
}
LoginDetails holds the login's password-policy and status fields — SSMS's Login Properties > Status page (plus the policy checkboxes and credential mapping shown on the General page). Windows logins have no password policy; those fields read as their zero value rather than erroring, since LOGINPROPERTY simply returns NULL for them.
type LoginUserMapping ¶ added in v0.0.4
LoginUserMapping describes one database this login is mapped into — SSMS's Login Properties > User Mapping page.
type MailProfile ¶
MailProfile represents an msdb Database Mail profile.
type NotificationMethod ¶ added in v0.0.6
type NotificationMethod int
NotificationMethod is msdb's bitmask for how an operator is notified (sysnotifications.notification_method, and reused by sysalerts.include_event_description — see Alert.IncludeEventDescriptionIn).
const ( NotifyMethodEmail NotificationMethod = 1 NotifyMethodPager NotificationMethod = 2 NotifyMethodNetSend NotificationMethod = 4 )
func (NotificationMethod) String ¶ added in v0.0.6
func (m NotificationMethod) String() string
String renders the method bitmask as e.g. "Email, Pager".
type NotifyLevel ¶ added in v0.0.6
type NotifyLevel int
NotifyLevel is the "when" condition for a job's email notification and its automatic-delete behavior — msdb's shared 0-3 encoding used by both sysjobs.notify_level_email and sysjobs.delete_level.
const ( NotifyNever NotifyLevel = 0 NotifyOnSuccess NotifyLevel = 1 NotifyOnFailure NotifyLevel = 2 NotifyOnComplete NotifyLevel = 3 )
type ObjectPermission ¶
type ObjectPermission string
ObjectPermission represents a single permission on a securable.
const ( PermSelect ObjectPermission = "SELECT" PermInsert ObjectPermission = "INSERT" PermUpdate ObjectPermission = "UPDATE" PermDelete ObjectPermission = "DELETE" PermExecute ObjectPermission = "EXECUTE" PermControl ObjectPermission = "CONTROL" PermView ObjectPermission = "VIEW DEFINITION" PermAlter ObjectPermission = "ALTER" PermReferences ObjectPermission = "REFERENCES" PermTakeOwnership ObjectPermission = "TAKE OWNERSHIP" PermViewChangeTracking ObjectPermission = "VIEW CHANGE TRACKING" )
type Operator ¶ added in v0.0.6
type Operator struct {
ID int
Name string
Enabled bool
EmailAddress string
PagerAddress string
NetSendAddress string
Category string
LastEmailDate time.Time
LastPagerDate time.Time
LastNetSendDate time.Time
// contains filtered or unexported fields
}
Operator represents a SQL Server Agent operator (msdb.dbo.sysoperators) — a notification target for job and alert email.
func (*Operator) DisableContext ¶ added in v0.0.6
DisableContext is the context-aware variant of Disable.
func (*Operator) DropContext ¶ added in v0.0.6
DropContext is the context-aware variant of Drop.
func (*Operator) EnableContext ¶ added in v0.0.6
EnableContext is the context-aware variant of Enable.
func (*Operator) NotifyingAlertSeq ¶ added in v0.0.6
NotifyingAlertSeq returns an iterator over every alert configured to notify this operator.
func (*Operator) NotifyingAlerts ¶ added in v0.0.6
func (o *Operator) NotifyingAlerts() ([]*AlertNotificationRef, error)
NotifyingAlerts returns every alert configured to notify this operator.
func (*Operator) NotifyingAlertsContext ¶ added in v0.0.6
func (o *Operator) NotifyingAlertsContext(ctx context.Context) ([]*AlertNotificationRef, error)
NotifyingAlertsContext is the context-aware variant of NotifyingAlerts.
func (*Operator) NotifyingJobSeq ¶ added in v0.0.6
NotifyingJobSeq returns an iterator over every job configured to e-mail this operator on completion.
func (*Operator) NotifyingJobs ¶ added in v0.0.6
func (o *Operator) NotifyingJobs() ([]*JobNotificationRef, error)
NotifyingJobs returns every job configured to email this operator on completion (sysjobs.notify_email_operator_id) — distinct from NotifyingAlerts, which covers alert-triggered notifications.
func (*Operator) NotifyingJobsContext ¶ added in v0.0.6
func (o *Operator) NotifyingJobsContext(ctx context.Context) ([]*JobNotificationRef, error)
NotifyingJobsContext is the context-aware variant of NotifyingJobs.
func (*Operator) RenameContext ¶ added in v0.0.6
RenameContext is the context-aware variant of Rename.
func (*Operator) SetCategory ¶ added in v0.0.6
SetCategory reassigns the operator's category. category == "" clears it — sent as the real [Uncategorized] category, for the same reason Alert.SetCategory does: sp_update_operator's category check (sp_verify_category, shared with sp_update_alert) rejects an empty name outright.
func (*Operator) SetCategoryContext ¶ added in v0.0.6
SetCategoryContext is the context-aware variant of SetCategory.
func (*Operator) SetEmailAddress ¶ added in v0.0.6
SetEmailAddress changes the operator's email address.
type PartitionFunction ¶
type PartitionFunction struct {
Name string
FunctionID int
InputType DataType
BoundaryCount int
IsRight bool // RIGHT = boundary is in right partition
Boundaries []string
// contains filtered or unexported fields
}
PartitionFunction mirrors sys.partition_functions.
func (*PartitionFunction) Drop ¶
func (pf *PartitionFunction) Drop() error
Drop drops the partition function.
func (*PartitionFunction) DropContext ¶ added in v0.0.5
func (pf *PartitionFunction) DropContext(ctx context.Context) error
DropContext is the context-aware variant of Drop.
func (*PartitionFunction) MergeRange ¶
func (pf *PartitionFunction) MergeRange(value string) error
MergeRange removes a boundary value from the partition function.
func (*PartitionFunction) MergeRangeContext ¶ added in v0.0.5
func (pf *PartitionFunction) MergeRangeContext(ctx context.Context, value string) error
MergeRangeContext is the context-aware variant of MergeRange.
func (*PartitionFunction) SplitRange ¶
func (pf *PartitionFunction) SplitRange(value string) error
SplitRange adds a new boundary value to the partition function.
func (*PartitionFunction) SplitRangeContext ¶ added in v0.0.5
func (pf *PartitionFunction) SplitRangeContext(ctx context.Context, value string) error
SplitRangeContext is the context-aware variant of SplitRange.
type PartitionInfo ¶
PartitionInfo holds per-partition row counts for a table.
type PartitionScheme ¶
type PartitionScheme struct {
Name string
SchemeID int
FunctionName string
FileGroups []string
// contains filtered or unexported fields
}
PartitionScheme mirrors sys.partition_schemes.
func (*PartitionScheme) Drop ¶
func (ps *PartitionScheme) Drop() error
Drop drops the partition scheme.
func (*PartitionScheme) DropContext ¶ added in v0.0.5
func (ps *PartitionScheme) DropContext(ctx context.Context) error
DropContext is the context-aware variant of Drop.
type PermissionEntry ¶ added in v0.0.4
type PermissionEntry struct {
Principal string
PrincipalType string // e.g. "DATABASE_ROLE", "SQL_USER"
Grantor string
Permission ObjectPermission
State PermissionState
}
PermissionEntry is one GRANT/DENY entry recorded for a securable, as reported by sys.database_permissions. The permission-name and state enums live in types.go (ObjectPermission, PermissionState).
type PermissionOptions ¶ added in v0.0.8
type PermissionOptions struct {
// WithGrantOption appends WITH GRANT OPTION to a GRANT, letting the
// grantee grant the same permission on to others. GRANT only.
WithGrantOption bool
// Cascade appends CASCADE to a DENY or REVOKE, applying it to every
// principal the grantee passed the permission on to. Required whenever
// the permission being taken away was granted WITH GRANT OPTION.
Cascade bool
// GrantOptionOnly turns a REVOKE into REVOKE GRANT OPTION FOR: the
// grantee keeps the permission but loses the right to grant it onward.
// REVOKE only, and always CASCADE.
GrantOptionOnly bool
}
PermissionOptions carries the GRANT/DENY/REVOKE modifiers the plain Grant/Deny/Revoke trios do not expose. The zero value renders exactly the statement those trios render, at every scope — true by construction since 2026-08-05: each plain method is a one-line delegation to its WithOptions counterpart passing PermissionOptions{}, so there is one renderer (permissionStmt) and one set of error strings rather than two that have to be kept in step.
The three fields are not independent of each other in practice, because SQL Server refuses some sequences outright:
- A permission granted WITH GRANT OPTION cannot be revoked or denied without CASCADE — "the permission was granted WITH GRANT OPTION" is a hard error, not a warning. Anything that takes such a grant away therefore needs Cascade set.
- GrantOptionOnly (REVOKE GRANT OPTION FOR) takes away only the right to re-grant and leaves the underlying GRANT in place. It is the "WITH GRANT OPTION -> plain GRANT" downgrade, and SQL Server requires CASCADE with it as well, so Cascade is implied and need not be set.
CASCADE reaches every principal the grantee granted the permission on to, which is the point of it and also why it is opt-in rather than always sent.
type PermissionState ¶
type PermissionState string
PermissionState represents GRANT / DENY / REVOKE.
const ( PermissionGrant PermissionState = "GRANT" PermissionDeny PermissionState = "DENY" PermissionRevoke PermissionState = "REVOKE" )
type PrincipalSecurable ¶ added in v0.0.5
type PrincipalSecurable struct {
SecurableType string
Schema string
Name string
Permission string
State string
}
PrincipalSecurable is one GRANT/DENY entry for a securable that a principal (typically a database role) has an explicit permission on — the inverse of Permissions, which is "one securable, every principal." This is "one principal, every securable" — SSMS's Database Role Properties > Securables page. SecurableType is "TABLE", "VIEW", "SCHEMA", or "DATABASE"; Schema and Name are empty for "DATABASE".
type ProcParam ¶ added in v0.0.4
type ProcParam struct {
// contains filtered or unexported fields
}
ProcParam is one argument to a stored procedure. Build it with In (input), Out (output), or InOut (both). Output and in/out parameters carry a pointer the returned value is written to, exactly as with database/sql's sql.Out.
type ProcResult ¶ added in v0.0.4
type ProcResult struct {
// ReturnStatus is the procedure's RETURN value (0 unless the procedure
// returns another code). SQL Server uses it by convention to signal
// success (0) or an error (non-zero).
ReturnStatus int32
}
ProcResult is what ExecProc reports beyond the values written to any output parameters' pointers.
type ProcessorInfo ¶ added in v0.0.5
ProcessorInfo holds server-wide CPU/NUMA topology: the header counts on Server Properties > Processors (CPU count, NUMA nodes, hyperthread ratio) and the NUMA column in its per-CPU affinity grid. CPUNUMANode[i] is the NUMA node hosting logical CPU i.
type QueryStoreInfo ¶ added in v0.0.5
type QueryStoreInfo struct {
DesiredState string // "OFF", "READ_ONLY", "READ_WRITE"
ActualState string
ReadOnlyReason int
CurrentStorageMB int64
MaxStorageMB int64
FlushIntervalSec int
IntervalMinutes int
MaxPlansPerQuery int
CaptureMode string // "NONE", "AUTO", "ALL", "CUSTOM"
SizeCleanupMode string // "OFF", "AUTO"
StaleThresholdDays int
WaitStatsCaptureMode string // "OFF", "ON"
CapturePolicyExecCount int
CapturePolicyCompileCPUMs int64
CapturePolicyExecCPUMs int64
CapturePolicyStaleHours int
}
QueryStoreInfo mirrors the single row of sys.database_query_store_options every database has, whether or not Query Store is actually turned on.
type QueryStoreOptions ¶ added in v0.0.5
type QueryStoreOptions struct {
DesiredState string // "OFF", "READ_ONLY", "READ_WRITE"
MaxStorageMB int64
CaptureMode string // "NONE", "AUTO", "ALL", "CUSTOM"
SizeCleanupMode string // "OFF", "AUTO"
StaleThresholdDays int
FlushIntervalSec int
IntervalMinutes int
MaxPlansPerQuery int
WaitStatsCaptureMode string // "OFF", "ON"
// Custom capture policy thresholds, used only when CaptureMode is
// "CUSTOM".
CapturePolicyExecCount int
CapturePolicyCompileCPUMs int64
CapturePolicyExecCPUMs int64
CapturePolicyStaleHours int
}
QueryStoreOptions holds the settings SetQueryStoreOptions writes via ALTER DATABASE ... SET QUERY_STORE = ON (...). DesiredState of "OFF" turns Query Store off and ignores every other field.
type RecoveryModel ¶
type RecoveryModel string
RecoveryModel mirrors SQL Server recovery model options.
const ( RecoveryModelSimple RecoveryModel = "SIMPLE" RecoveryModelFull RecoveryModel = "FULL" RecoveryModelBulkLogged RecoveryModel = "BULK_LOGGED" )
type RelocateFile ¶
RelocateFile maps a logical file name to a new physical path.
type RestoreOptions ¶
type RestoreOptions struct {
// Database is the target database name (required).
Database string
// Action: DATABASE (default), LOG, or FILES.
Action BackupAction
// Files and FileGroups name the logical files / filegroups a
// BackupActionFiles restore covers — see BackupOptions.Files for why
// these are clauses on a RESTORE DATABASE rather than a verb of their own.
Files []string
FileGroups []string
// Devices is one or more backup file paths (required).
Devices []string
// FileNumber selects which backup set on the device to restore (RESTORE's
// WITH FILE = n, 1-based, as reported by BackupHeader.Position). Zero
// leaves the clause off, which SQL Server reads as the first set — so a
// device holding an appended differential or log needs this set
// explicitly, or the full backup at position 1 is restored instead.
FileNumber int
// RelocateFiles maps logical file names to new physical paths.
RelocateFiles []RelocateFile
// NoRecovery keeps the database in RESTORING state (for log shipping / tail-log).
NoRecovery bool
// Recovery transitions the database to ONLINE (default when neither flag is set).
Recovery bool
// StandBy sets standby mode; provide the undo-file path.
StandBy string
// Replace forces restoration over an existing database.
Replace bool
// Checksum verifies backup checksums.
Checksum bool
// Stats controls progress reporting frequency (e.g. 10 = every 10%).
// If Progress is set and Stats is left at 0, it defaults to 10 so
// percent-complete messages actually get emitted.
Stats int
// StopAt performs a point-in-time restore.
StopAt *time.Time
// Progress, if set, is called for every message SQL Server emits while
// the restore runs, including the "N percent processed" notices STATS
// produces — pct is -1 for a message that doesn't carry a percentage.
Progress func(pct int, message string)
}
RestoreOptions configures a RESTORE DATABASE or RESTORE LOG operation.
type RoleMember ¶ added in v0.0.5
type RoleMember struct {
Name string
Type string // e.g. "SQL_USER", "WINDOWS_USER", "DATABASE_ROLE"
}
RoleMember is one direct member of a database role.
type SQLError ¶ added in v0.0.4
type SQLError struct {
// Number is the SQL Server error number (the "Msg" value), e.g. 208
// for "Invalid object name".
Number int32
// State is the error state, disambiguating errors that share a Number.
State uint8
// Class is the severity level (the "Level" value). 0-10 are
// informational; 11-16 are user-correctable; 17+ are software or
// hardware errors.
Class uint8
// Message is the human-readable error text.
Message string
// ServerName is the instance that raised the error.
ServerName string
// ProcName is the stored procedure, function, or trigger that raised
// the error; empty for an ad-hoc batch.
ProcName string
// LineNo is the 1-based line within the batch or procedure.
LineNo int32
// All lists every error the batch produced, first to last. The final
// entry mirrors the fields above. Nil when only a single error is
// reported.
All []SQLError
}
SQLError is a structured SQL Server error — the "Msg 208, Level 16, State 1, Line 4" detail SSMS shows in its Messages pane. It is extracted from the driver's own error type so callers can inspect the error number, severity, and line without importing github.com/microsoft/go-mssqldb directly. Use AsSQLError to obtain one from any error.
func AsSQLError ¶ added in v0.0.4
AsSQLError reports whether err, or any error it wraps, is a SQL Server error and, if so, returns its structured form.
func (*SQLError) Error ¶ added in v0.0.4
Error renders the error in the multi-line form SSMS uses: the Header line followed by the message text.
type Schedule ¶ added in v0.0.6
type Schedule struct {
ID int
Name string
Enabled bool
FreqType ScheduleFreqType
FreqInterval int
FreqSubdayType ScheduleSubdayType
FreqSubdayInterval int
FreqRelativeInterval int
FreqRecurrenceFactor int
ActiveStartDate time.Time
// ActiveEndDate is the zero Time when the schedule has no end date.
ActiveEndDate time.Time
// ActiveStartTime and ActiveEndTime are HHMMSS integers, e.g. 10000 = 01:00:00.
ActiveStartTime int
ActiveEndTime int
OwnerLoginName string
CreateDate time.Time
ModifyDate time.Time
// contains filtered or unexported fields
}
Schedule represents a shared SQL Server Agent schedule (msdb.dbo.sysschedules), which may be attached to more than one job.
func (*Schedule) Description ¶ added in v0.0.6
Description renders the schedule's frequency and active-date range as a human-readable summary, the same shape SSMS shows at the bottom of its own Schedule Properties dialog, e.g. "Occurs every day at 01:00:00. Schedule is active from 2026-01-01."
func (*Schedule) DisableContext ¶ added in v0.0.6
DisableContext is the context-aware variant of Disable.
func (*Schedule) Drop ¶ added in v0.0.6
Drop deletes the schedule via sp_delete_schedule. SQL Server refuses the call (returning a wrapped SQLError) if the schedule is still attached to one or more jobs — detach it first via Job.DetachSchedule.
func (*Schedule) DropContext ¶ added in v0.0.6
DropContext is the context-aware variant of Drop.
func (*Schedule) EnableContext ¶ added in v0.0.6
EnableContext is the context-aware variant of Enable.
func (*Schedule) JobSeq ¶ added in v0.0.6
JobSeq returns an iterator over the jobs this schedule is attached to.
func (*Schedule) Jobs ¶ added in v0.0.6
Jobs returns every job this schedule is attached to — a "referenced by" list. Only JobID/Name/IsEnabled are populated on each returned Job (not its activity/history joins), enough for a reference list without the extra round trips Server.Jobs pays for.
func (*Schedule) JobsContext ¶ added in v0.0.6
JobsContext is the context-aware variant of Jobs.
func (*Schedule) RenameContext ¶ added in v0.0.6
RenameContext is the context-aware variant of Rename.
func (*Schedule) SetActiveRange ¶ added in v0.0.6
SetActiveRange changes the schedule's Duration section: the date range it's active over, plus the daily time-of-day window (HHMMSS) it can fire within. A zero endDate means "no end date".
func (*Schedule) SetActiveRangeContext ¶ added in v0.0.6
func (sch *Schedule) SetActiveRangeContext(ctx context.Context, startDate, endDate time.Time, startTime, endTime int) error
SetActiveRangeContext is the context-aware variant of SetActiveRange.
func (*Schedule) SetFrequency ¶ added in v0.0.6
func (sch *Schedule) SetFrequency(f ScheduleFrequency) error
SetFrequency replaces the schedule's frequency definition.
func (*Schedule) SetFrequencyContext ¶ added in v0.0.6
func (sch *Schedule) SetFrequencyContext(ctx context.Context, f ScheduleFrequency) error
SetFrequencyContext is the context-aware variant of SetFrequency.
type ScheduleFreqType ¶ added in v0.0.6
type ScheduleFreqType int
ScheduleFreqType mirrors sysschedules.freq_type.
const ( FreqOnce ScheduleFreqType = 1 FreqDaily ScheduleFreqType = 4 FreqWeekly ScheduleFreqType = 8 FreqMonthly ScheduleFreqType = 16 FreqMonthlyRelative ScheduleFreqType = 32 FreqAutoStart ScheduleFreqType = 64 FreqOnIdle ScheduleFreqType = 128 )
type ScheduleFrequency ¶ added in v0.0.6
type ScheduleFrequency struct {
FreqType ScheduleFreqType
FreqInterval int
FreqSubdayType ScheduleSubdayType
FreqSubdayInterval int
FreqRelativeInterval int
FreqRecurrenceFactor int
}
ScheduleFrequency bundles the freq_type cluster of sp_update_schedule's parameters — freq_interval's meaning depends on freq_type, so these are only meaningful set together, matching how SSMS's own Schedule Properties dialog submits its whole Frequency section as one unit.
type ScheduleSubdayType ¶ added in v0.0.6
type ScheduleSubdayType int
ScheduleSubdayType mirrors sysschedules.freq_subday_type.
const ( SubdayOnce ScheduleSubdayType = 1 SubdaySeconds ScheduleSubdayType = 2 SubdayMinutes ScheduleSubdayType = 4 SubdayHours ScheduleSubdayType = 8 )
type Schema ¶
Schema mirrors Microsoft.SqlServer.Management.Smo.Schema.
func (*Schema) ChangeOwner ¶
ChangeOwner transfers schema ownership to a new principal.
func (*Schema) ChangeOwnerContext ¶
ChangeOwnerContext is the context-aware variant of ChangeOwner.
func (*Schema) DropContext ¶ added in v0.0.6
DropContext is the context-aware variant of Drop.
func (*Schema) ObjectCount ¶ added in v0.0.5
ObjectCount returns the number of objects (tables, views, procedures, functions, ...) contained in the schema — SSMS's Owned Schemas "Object count" field, fetched lazily only when a schema is selected rather than folded into Schema/SchemasContext (used by every tree-list call).
type ScriptCollector ¶ added in v0.0.4
type ScriptCollector struct {
Statements []string
// contains filtered or unexported fields
}
ScriptCollector accumulates the SQL statements a write method would have executed, instead of running them. See WithScript. Statements is guarded by mu since nothing stops a caller from reusing one collector/context across write calls issued from multiple goroutines concurrently.
func WithScript ¶ added in v0.0.4
func WithScript(ctx context.Context) (context.Context, *ScriptCollector)
WithScript returns a derived context carrying a *ScriptCollector. Every gosmo write method invoked with the returned context appends its statement to the collector and returns as if it had succeeded, without touching the server — callers use this to preview or hand off the exact SQL a set of pending edits would run (e.g. an "Script Changes" action that opens the statements in a query editor instead of executing them).
Read methods are unaffected: only the exec chokepoints (Server.execContext, Database.exec) consult the collector.
type ScriptOptions ¶
type ScriptOptions struct {
// IncludeHeaders adds an informational header comment. Applies to
// ScriptTable and ScriptDatabase only.
IncludeHeaders bool
// IncludeIfNotExists guards each generated statement with its own
// existence check. Applies to ScriptTable and ScriptDatabase only:
// ScriptView/StoredProcedure/Function return the module's definition
// verbatim from sys.sql_modules and don't synthesize DDL to guard.
//
// The guard is per statement, never a block spanning several. A BEGIN
// block containing GO separators is split across batches — GO is a
// client-side batch break — leaving an unclosed BEGIN in one batch and a
// bare END in another, which is a script that cannot parse.
IncludeIfNotExists bool
// ScriptDrops emits DROP statements instead of CREATE statements.
ScriptDrops bool
// SchemaQualify prefixes object names with their schema.
SchemaQualify bool
// AnsiPadding emits SET ANSI_PADDING ON before CREATE TABLE.
AnsiPadding bool
}
ScriptOptions controls how objects are scripted.
func DefaultScriptOptions ¶
func DefaultScriptOptions() ScriptOptions
DefaultScriptOptions returns sensible defaults.
type Scripter ¶
type Scripter struct {
// contains filtered or unexported fields
}
Scripter generates T-SQL DDL scripts for objects in a database.
func NewScripter ¶
func NewScripter(db *Database, opts ScriptOptions) *Scripter
NewScripter creates a Scripter for the given database.
func (*Scripter) ScriptDatabase ¶
ScriptDatabase generates a CREATE DATABASE script for the attached database.
func (*Scripter) ScriptFunction ¶
ScriptFunction returns the CREATE FUNCTION definition.
func (*Scripter) ScriptFunctionContext ¶
ScriptFunctionContext is the context-aware variant.
func (*Scripter) ScriptStoredProcedure ¶
ScriptStoredProcedure returns the CREATE PROCEDURE definition.
func (*Scripter) ScriptStoredProcedureContext ¶
func (sc *Scripter) ScriptStoredProcedureContext(ctx context.Context, schema, name string) (string, error)
ScriptStoredProcedureContext is the context-aware variant.
func (*Scripter) ScriptTable ¶
ScriptTable generates a CREATE TABLE (or DROP TABLE) script.
func (*Scripter) ScriptTableContext ¶
ScriptTableContext is the context-aware variant of ScriptTable.
func (*Scripter) ScriptView ¶
ScriptView returns the CREATE VIEW definition as stored in sys.sql_modules.
type SearchResult ¶ added in v0.0.4
type SearchResult struct {
Schema string
Name string
TypeDesc string // e.g. "USER_TABLE", "VIEW", "SQL_STORED_PROCEDURE"
}
SearchResult is one object matched by Database.Search.
type SecurableRef ¶ added in v0.0.8
SecurableRef names one schema-scoped object a permission can be granted on. Type is "SCHEMA", "TABLE" or "VIEW", matching the SecurableType strings PrincipalSecurable reports; Schema is empty for a "SCHEMA".
This is deliberately just the identity of the securable, not the object: a permissions UI listing candidates to grant on needs the name and the type and nothing else, and loading Table or View values for thousands of candidates to show a picker is work no caller wants.
type SecurableSearch ¶ added in v0.0.8
SecurableSearch narrows FindSecurables.
Name is matched case-insensitively as a substring of the securable's qualified name — "dbo.Orders" for a table, the bare name for a schema — so both "ord" and "dbo.ord" find dbo.Orders. LIKE wildcards in it are matched literally, not as wildcards. An empty Name matches everything.
Limit caps the rows returned; 0 means no cap. Results are ordered schemas, then tables, then views, each by qualified name, so a capped search returns a stable prefix rather than an arbitrary subset.
type SecurityPolicy ¶
type SecurityPolicy struct {
Name string
Schema string
ObjectID int
IsEnabled bool
IsNotForReplication bool
Predicates []*SecurityPredicate
// contains filtered or unexported fields
}
SecurityPolicy mirrors sys.security_policies.
func (*SecurityPolicy) Disable ¶
func (p *SecurityPolicy) Disable() error
Disable disables the security policy.
func (*SecurityPolicy) DisableContext ¶ added in v0.0.5
func (p *SecurityPolicy) DisableContext(ctx context.Context) error
DisableContext is the context-aware variant of Disable.
func (*SecurityPolicy) DropContext ¶ added in v0.0.5
func (p *SecurityPolicy) DropContext(ctx context.Context) error
DropContext is the context-aware variant of Drop.
func (*SecurityPolicy) Enable ¶
func (p *SecurityPolicy) Enable() error
Enable enables the security policy.
func (*SecurityPolicy) EnableContext ¶ added in v0.0.5
func (p *SecurityPolicy) EnableContext(ctx context.Context) error
EnableContext is the context-aware variant of Enable.
type SecurityPredicate ¶
type SecurityPredicate struct {
PredicateType string // "FILTER" or "BLOCK"
PredicateDefinition string
TargetSchema string
TargetTable string
Operation string // for BLOCK: AFTER INSERT, AFTER UPDATE, etc.
}
SecurityPredicate represents one predicate in a security policy.
type Sequence ¶
type Sequence struct {
Name string
Schema string
ObjectID int
DataType DataType
StartValue int64
Increment int64
MinValue int64
MaxValue int64
IsCycling bool
IsCached bool
CacheSize int
CurrentValue int64
// contains filtered or unexported fields
}
Sequence mirrors sys.sequences.
func (*Sequence) DropContext ¶ added in v0.0.5
DropContext is the context-aware variant of Drop.
func (*Sequence) NextValueContext ¶ added in v0.0.5
NextValueContext is the context-aware variant of NextValue.
This deliberately uses withConn, not queryRow: "NEXT VALUE FOR" advances the sequence as a side effect of being read, so it isn't safe to retry — unlike every other queryRow caller in this package, re-running it on a fresh connection after a transient failure could silently skip a value. withConn still retries the acquire+USE step (safe, nothing server-side has happened yet), just not the query itself.
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
Server is the top-level object representing a SQL Server instance. Create one with Connect() and use it to enumerate or manage databases, logins, server roles, linked servers, and more.
func Connect ¶
func Connect(opts ConnectionOptions) (*Server, error)
Connect opens a connection to a SQL Server instance and returns a Server. The driver and DSN are chosen automatically based on opts.Auth.
func ConnectContext ¶
func ConnectContext(ctx context.Context, opts ConnectionOptions) (*Server, error)
ConnectContext is the context-aware variant of Connect. The context governs the initial ping and server-info load only; subsequent calls each carry their own context.
func (*Server) ActiveSessionSeq ¶ added in v0.0.6
func (s *Server) ActiveSessionSeq(ctx context.Context, includeSystem bool) iter.Seq2[*ActiveSession, error]
ActiveSessionSeq returns an iterator over every session currently connected to the server, optionally including system sessions.
func (*Server) ActiveSessions ¶
func (s *Server) ActiveSessions(includeSystem bool) ([]*ActiveSession, error)
ActiveSessions returns running sessions. Set includeSystem=true to include SQL Server internal sessions.
func (*Server) ActiveSessionsContext ¶
func (s *Server) ActiveSessionsContext(ctx context.Context, includeSystem bool) ([]*ActiveSession, error)
ActiveSessionsContext is the context-aware variant of ActiveSessions.
func (*Server) AddServerRoleMember ¶ added in v0.0.6
AddServerRoleMember adds member (a login or another server role, by name) to a server role.
func (*Server) AddServerRoleMemberContext ¶ added in v0.0.6
AddServerRoleMemberContext is the context-aware variant of AddServerRoleMember.
func (*Server) AgentInfo ¶ added in v0.0.6
func (s *Server) AgentInfo() (*AgentStatus, error)
AgentInfo reports SQL Server Agent's current run state.
func (*Server) AgentInfoContext ¶ added in v0.0.6
func (s *Server) AgentInfoContext(ctx context.Context) (*AgentStatus, error)
AgentInfoContext is the context-aware variant of AgentInfo.
func (*Server) Alert ¶ added in v0.0.7
Alert returns a lightweight handle for an alert by name, without querying msdb — the alert-side counterpart of Server.Database. ID, Severity, JobName and every other cached field stay at their zero value; AlertByName is what populates them.
Every write method on *Alert addresses the alert by name (Notify, RemoveNotify, Update, ...), so this handle is enough to keep operating on an alert the caller already knows exists — and is the only usable form under a WithScript context, where AlertByNameContext's lookup is a real read and an alert whose sp_add_alert was merely collected is not there to find.
func (*Server) AlertByName ¶ added in v0.0.6
AlertByName returns a single alert by name.
func (*Server) AlertByNameContext ¶ added in v0.0.6
AlertByNameContext is the context-aware variant of AlertByName.
func (*Server) AlertSeq ¶ added in v0.0.6
AlertSeq returns an iterator over all SQL Server Agent alerts.
func (*Server) Alerts ¶ added in v0.0.6
Alerts returns every SQL Server Agent alert defined on the server.
func (*Server) AlertsContext ¶ added in v0.0.6
AlertsContext is the context-aware variant of Alerts.
func (*Server) Backup ¶
func (s *Server) Backup(opts BackupOptions) error
Backup performs a BACKUP DATABASE (or LOG) operation.
func (*Server) BackupContext ¶
func (s *Server) BackupContext(ctx context.Context, opts BackupOptions) error
BackupContext is the context-aware variant of Backup.
func (*Server) BackupFileList ¶ added in v0.0.5
func (s *Server) BackupFileList(device string) ([]*BackupFile, error)
BackupFileList reads the database files contained in the first backup set on a backup device (RESTORE FILELISTONLY). Use BackupFileListForSet for a device holding more than one set.
func (*Server) BackupFileListContext ¶ added in v0.0.5
BackupFileListContext is the context-aware variant of BackupFileList.
func (*Server) BackupFileListForSet ¶ added in v0.0.8
func (s *Server) BackupFileListForSet(device string, fileNumber int) ([]*BackupFile, error)
BackupFileListForSet reads the database files contained in one particular backup set on a device (RESTORE FILELISTONLY WITH FILE = n).
fileNumber is 1-based, as reported by BackupHeader.Position, and matches RestoreOptions.FileNumber — pass the same value to both or the file list describes a different set from the one being restored. Zero leaves the clause off, which SQL Server reads as the first set.
A device that backups were appended to holds one set per backup, and their file lists differ whenever the sets came from different databases or files were added between them. Building RESTORE's MOVE clauses from the wrong set names logical files the restored set does not contain, which SQL Server rejects outright.
func (*Server) BackupFileListForSetContext ¶ added in v0.0.8
func (s *Server) BackupFileListForSetContext(ctx context.Context, device string, fileNumber int) ([]*BackupFile, error)
BackupFileListForSetContext is the context-aware variant of BackupFileListForSet.
func (*Server) BackupFileSeq ¶ added in v0.0.5
BackupFileSeq returns an iterator over the database files inside the backup set on a backup device.
func (*Server) BackupHeaderSeq ¶ added in v0.0.5
func (s *Server) BackupHeaderSeq(ctx context.Context, device string) iter.Seq2[*BackupHeader, error]
BackupHeaderSeq returns an iterator over the backup sets on a backup device.
func (*Server) BackupHeaders ¶ added in v0.0.5
func (s *Server) BackupHeaders(device string) ([]*BackupHeader, error)
BackupHeaders reads the backup sets on a backup device (RESTORE HEADERONLY) — one BackupHeader per set, in position order.
func (*Server) BackupHeadersContext ¶ added in v0.0.5
BackupHeadersContext is the context-aware variant of BackupHeaders.
func (*Server) BackupHistory ¶
func (s *Server) BackupHistory(databaseName string) ([]*BackupInfo, error)
BackupHistory returns the backup history for a database from msdb.
func (*Server) BackupHistoryContext ¶
func (s *Server) BackupHistoryContext(ctx context.Context, databaseName string) ([]*BackupInfo, error)
BackupHistoryContext is the context-aware variant of BackupHistory.
func (*Server) BackupHistorySeq ¶ added in v0.0.6
func (s *Server) BackupHistorySeq(ctx context.Context, databaseName string) iter.Seq2[*BackupInfo, error]
BackupHistorySeq returns an iterator over databaseName's backup/restore history, as recorded in msdb.
func (*Server) Categories ¶ added in v0.0.6
func (s *Server) Categories(class CategoryClass) ([]*Category, error)
Categories returns every category of the given class.
func (*Server) CategoriesContext ¶ added in v0.0.6
CategoriesContext is the context-aware variant of Categories.
func (*Server) CategorySeq ¶ added in v0.0.6
CategorySeq returns an iterator over every category of the given class (job or alert categories).
func (*Server) ConfigurationByName ¶
func (s *Server) ConfigurationByName(name string) (*ConfigurationOption, error)
ConfigurationByName returns a single option using a direct parameterised query.
func (*Server) ConfigurationByNameContext ¶
func (s *Server) ConfigurationByNameContext(ctx context.Context, name string) (*ConfigurationOption, error)
ConfigurationByNameContext is the context-aware variant.
func (*Server) ConfigurationSeq ¶ added in v0.0.6
ConfigurationSeq returns an iterator over all sp_configure options.
func (*Server) Configurations ¶
func (s *Server) Configurations() ([]*ConfigurationOption, error)
Configurations returns all server configuration options.
func (*Server) ConfigurationsContext ¶
func (s *Server) ConfigurationsContext(ctx context.Context) ([]*ConfigurationOption, error)
ConfigurationsContext is the context-aware variant of Configurations.
func (*Server) CreateAlert ¶ added in v0.0.6
func (s *Server) CreateAlert(req CreateAlertRequest) (*Alert, error)
CreateAlert creates a new SQL Server event alert via sp_add_alert.
func (*Server) CreateAlertContext ¶ added in v0.0.6
CreateAlertContext is the context-aware variant of CreateAlert.
func (*Server) CreateCategory ¶ added in v0.0.6
func (s *Server) CreateCategory(class CategoryClass, name string) error
CreateCategory creates a new category via sp_add_category.
func (*Server) CreateCategoryContext ¶ added in v0.0.6
CreateCategoryContext is the context-aware variant of CreateCategory.
func (*Server) CreateDatabase ¶
func (s *Server) CreateDatabase(name string, opts *CreateDatabaseOptions) error
CreateDatabase creates a new database with the given name and optional options.
func (*Server) CreateDatabaseContext ¶
func (s *Server) CreateDatabaseContext(ctx context.Context, name string, opts *CreateDatabaseOptions) error
CreateDatabaseContext is the context-aware variant of CreateDatabase.
func (*Server) CreateJob ¶
func (s *Server) CreateJob(req CreateJobRequest) (*Job, error)
CreateJob creates a new SQL Server Agent job.
func (*Server) CreateJobContext ¶
CreateJobContext is the context-aware variant of CreateJob. It also enlists the job to run on the local server via sp_add_jobserver — without that, SQL Server Agent refuses to start the job (sp_start_job: "does not have any job server or servers defined") or let an alert target it (sp_update_alert/sp_add_alert: "cannot be used by an alert"). Multi-server (MSX/TSX) target-server selection is out of scope here, so "(local)" is the only target.
func (*Server) CreateLogin ¶
func (s *Server) CreateLogin(name, password string, opts *CreateLoginOptions) error
CreateLogin creates a SQL Server or Windows login. Pass an empty password to create a Windows login (FROM WINDOWS).
func (*Server) CreateLoginContext ¶
func (s *Server) CreateLoginContext(ctx context.Context, name, password string, opts *CreateLoginOptions) error
CreateLoginContext is the context-aware variant of CreateLogin.
Security: the password is never string-concatenated raw into the SQL text — it's quoted via nStringLiteral (N'...', doubling any embedded quote), the same escaping every other literal in this package uses. HASHED is deliberately not used here: it tells SQL Server the value is already one of its own password-hash formats, not a cleartext password, so passing an arbitrary hex encoding of the cleartext under HASHED either fails outright or creates a login nothing can ever authenticate as.
func (*Server) CreateOperator ¶ added in v0.0.6
func (s *Server) CreateOperator(req CreateOperatorRequest) (*Operator, error)
CreateOperator creates a new operator via sp_add_operator.
func (*Server) CreateOperatorContext ¶ added in v0.0.6
func (s *Server) CreateOperatorContext(ctx context.Context, req CreateOperatorRequest) (*Operator, error)
CreateOperatorContext is the context-aware variant of CreateOperator.
func (*Server) CreateSchedule ¶ added in v0.0.6
func (s *Server) CreateSchedule(req CreateScheduleRequest) (*Schedule, error)
CreateSchedule creates a new shared schedule via sp_add_schedule. The returned Schedule is not yet attached to any job — see Job.AttachSchedule.
func (*Server) CreateScheduleContext ¶ added in v0.0.6
func (s *Server) CreateScheduleContext(ctx context.Context, req CreateScheduleRequest) (*Schedule, error)
CreateScheduleContext is the context-aware variant of CreateSchedule.
func (*Server) CredentialSeq ¶ added in v0.0.4
CredentialSeq returns an iterator over all server-level credentials.
func (*Server) Credentials ¶ added in v0.0.4
func (s *Server) Credentials() ([]*Credential, error)
Credentials returns every server-level credential.
func (*Server) CredentialsContext ¶ added in v0.0.4
func (s *Server) CredentialsContext(ctx context.Context) ([]*Credential, error)
CredentialsContext is the context-aware variant of Credentials.
func (*Server) CurrentDatabase ¶ added in v0.0.4
CurrentDatabase returns the name of the database the connection is currently in — the login's default database when ConnectionOptions.Database was left empty at connect time, or whatever a session-level USE has since switched to.
func (*Server) CurrentDatabaseContext ¶ added in v0.0.4
CurrentDatabaseContext is the context-aware variant of CurrentDatabase.
func (*Server) CurrentLogin ¶ added in v0.0.6
CurrentLogin returns the server login name the connection is authenticated as (SUSER_NAME()) — the real login behind the connection, which for Windows/Entra auth differs from whatever was passed as ConnectionOptions.User (often empty for those methods).
func (*Server) CurrentLoginContext ¶ added in v0.0.6
CurrentLoginContext is the context-aware variant of CurrentLogin.
func (*Server) CycleErrorLog ¶
CycleErrorLog closes the current error log and opens a new one. Equivalent to sp_cycle_errorlog.
func (*Server) CycleErrorLogContext ¶
CycleErrorLogContext is the context-aware variant of CycleErrorLog.
func (*Server) Database ¶ added in v0.0.5
Database returns a lightweight handle for name without querying the server at all — unlike DatabaseByName/DatabaseByNameContext, it doesn't verify the database exists or populate State/RecoveryModel/Collation/ CompatibilityLevel/etc. (they stay at their zero value). Every write method on *Database (AddFileGroupContext, SetDatabaseOptionContext, SetOwnerContext, ...) only ever needs the database's name, never those cached fields, so this is sufficient for issuing further ALTER-style calls against a database the caller already knows exists — most commonly one it just created in the same operation. It's also the only way to do that under a WithScript-derived context: DatabaseByNameContext's own lookup query is a real read, not a write, so it isn't captured by ScriptCollector and would fail outright (or return stale data) for a database whose CREATE DATABASE was itself only scripted, not actually run.
func (*Server) DatabaseByName ¶
DatabaseByName returns a single database by name, querying sys.databases so the returned handle is verified to exist and has State/RecoveryModel/ Collation/CompatibilityLevel/etc. populated. Use it when you need to read those or to confirm the database is there; use Database when you only need a handle to issue further ALTER-style calls against a database you already know exists. The two are not interchangeable — see Database.
func (*Server) DatabaseByNameContext ¶
DatabaseByNameContext is the context-aware variant of DatabaseByName.
func (*Server) DatabaseSeq ¶
DatabaseSeq returns an iterator over all databases on the server. The second yield value carries any error that stopped the iteration.
func (*Server) DatabasesContext ¶
DatabasesContext returns all databases, honouring the provided context.
func (*Server) DeleteCategory ¶ added in v0.0.6
func (s *Server) DeleteCategory(class CategoryClass, name string) error
DeleteCategory deletes a category via sp_delete_category.
func (*Server) DeleteCategoryContext ¶ added in v0.0.6
DeleteCategoryContext is the context-aware variant of DeleteCategory.
func (*Server) DenyServerPermission ¶ added in v0.0.4
DenyServerPermission denies a server-level permission to principal.
func (*Server) DenyServerPermissionContext ¶ added in v0.0.4
func (s *Server) DenyServerPermissionContext(ctx context.Context, permission, principal string) error
DenyServerPermissionContext is the context-aware variant of DenyServerPermission. See GrantServerPermissionContext's doc comment for the USE master prefix.
func (*Server) DenyServerPermissionWithOptions ¶ added in v0.0.8
func (s *Server) DenyServerPermissionWithOptions(permission, principal string, opts PermissionOptions) error
DenyServerPermissionWithOptions denies a server-level permission to principal, honouring opts.
func (*Server) DenyServerPermissionWithOptionsContext ¶ added in v0.0.8
func (s *Server) DenyServerPermissionWithOptionsContext(ctx context.Context, permission, principal string, opts PermissionOptions) error
DenyServerPermissionWithOptionsContext is the context-aware variant of DenyServerPermissionWithOptions. See GrantServerPermissionContext for the USE master prefix.
func (*Server) DiskVolumeSeq ¶ added in v0.0.5
DiskVolumeSeq returns an iterator over the server's storage volumes.
func (*Server) DiskVolumes ¶ added in v0.0.5
func (s *Server) DiskVolumes() ([]DiskVolumeInfo, error)
DiskVolumes returns free/total space for every storage volume backing a database file on the server.
func (*Server) DiskVolumesContext ¶ added in v0.0.5
func (s *Server) DiskVolumesContext(ctx context.Context) ([]DiskVolumeInfo, error)
DiskVolumesContext is the context-aware variant of DiskVolumes.
func (*Server) DropDatabase ¶
DropDatabase drops the named database. When force is true, active connections are terminated first.
func (*Server) DropDatabaseContext ¶
DropDatabaseContext is the context-aware variant of DropDatabase.
func (*Server) DropLoginContext ¶
DropLoginContext is the context-aware variant of DropLogin.
func (*Server) EffectiveServerPermissionSeq ¶ added in v0.0.8
func (s *Server) EffectiveServerPermissionSeq(ctx context.Context, login string) iter.Seq2[*EffectivePermission, error]
EffectiveServerPermissionSeq returns an iterator over every server-level permission login effectively holds.
func (*Server) EffectiveServerPermissions ¶ added in v0.0.8
func (s *Server) EffectiveServerPermissions(login string) ([]*EffectivePermission, error)
EffectiveServerPermissions returns every server-level permission login effectively holds — SSMS's Effective tab on a Login Properties > Securables page, with the server row selected.
login must be a *login*. A server role is not accepted, for the same reason a database role isn't (see EffectivePermissions): SQL Server refuses to impersonate one, with Msg 15406, the server-principal wording of the same error. The impersonation is EXECUTE AS LOGIN rather than EXECUTE AS USER, and it needs IMPERSONATE on that login (CONTROL SERVER covers it).
func (*Server) EffectiveServerPermissionsContext ¶ added in v0.0.8
func (s *Server) EffectiveServerPermissionsContext(ctx context.Context, login string) ([]*EffectivePermission, error)
EffectiveServerPermissionsContext is the context-aware variant of EffectiveServerPermissions.
func (*Server) EventAlertSeq ¶ added in v0.0.6
EventAlertSeq returns an iterator over the SQL-only-implementable subset of alerts (see Server.EventAlerts).
func (*Server) EventAlerts ¶ added in v0.0.6
EventAlerts returns only plain SQL Server event alerts — the SQL-only implementable subset (see Alert.IsEventAlert). WMI alerts and performance-condition alerts are excluded, since they depend on non-SQL subsystems.
func (*Server) EventAlertsContext ¶ added in v0.0.6
EventAlertsContext is the context-aware variant of EventAlerts.
func (*Server) GrantServerPermission ¶ added in v0.0.4
GrantServerPermission grants a server-level permission to principal.
func (*Server) GrantServerPermissionContext ¶ added in v0.0.4
func (s *Server) GrantServerPermissionContext(ctx context.Context, permission, principal string) error
GrantServerPermissionContext is the context-aware variant of GrantServerPermission.
SQL Server rejects GRANT/DENY/REVOKE at server scope outright unless the session's current database is master ("Permissions at the server scope can only be granted when the current database is master") — its own restriction, not one gosmo imposes — so every statement here is prefixed with USE master in the same batch.
That USE does not leak into whatever borrows the connection next, and the reason is the driver, not this package: USE is session state and would otherwise survive the connection's return to the pool. database/sql calls driver.SessionResetter.ResetSession before handing a pooled connection to its next user, and go-mssqldb implements it by flagging the next TDS batch as a connection reset (Conn.ResetSession -> sendSqlBatch72's resetSession), which restores the session's database to the connection string's.
Verified live 2026-08-01, A/B against a connection opened with Database set: eight pooled connections all still reported that database after a GRANT. Recorded because the shape of this code invites the opposite conclusion — a review that session proposed replacing it with a pinned connection that reads DB_NAME(), switches, and switches back, which is three extra round trips per grant to re-solve what the driver already handles.
func (*Server) GrantServerPermissionWithOptions ¶ added in v0.0.8
func (s *Server) GrantServerPermissionWithOptions(permission, principal string, opts PermissionOptions) error
GrantServerPermissionWithOptions grants a server-level permission to principal, honouring opts.
func (*Server) GrantServerPermissionWithOptionsContext ¶ added in v0.0.8
func (s *Server) GrantServerPermissionWithOptionsContext(ctx context.Context, permission, principal string, opts PermissionOptions) error
GrantServerPermissionWithOptionsContext is the context-aware variant of GrantServerPermissionWithOptions. See GrantServerPermissionContext for the USE master prefix every server-scoped statement carries.
func (*Server) Info ¶
func (s *Server) Info() *ServerInfo
Info returns cached server metadata (version, edition, paths ...).
func (*Server) Job ¶ added in v0.0.7
Job returns a lightweight handle for a job by name, without querying msdb — the job-side counterpart of Server.Database. JobID, Category, LastRunOutcome and every other cached field stay at their zero value; JobByName is what populates them.
Every write method on *Job builds its statement from Name alone (AddStep, AttachSchedule, Start, Rename, ...), so this handle is enough to keep operating on a job the caller already knows exists — and is the only usable form under a WithScript context, where JobByNameContext's lookup is a real read and a job whose sp_add_job was merely collected is not there to find.
func (*Server) JobByName ¶
JobByName returns a single job by name using a direct parameterised query.
func (*Server) JobByNameContext ¶
JobByNameContext is the context-aware variant of JobByName.
func (*Server) JobHistory ¶ added in v0.0.6
func (s *Server) JobHistory(limit int) ([]*JobHistoryEntry, error)
JobHistory returns the most recent job-level history entries (step_id = 0, i.e. the overall outcome of each run rather than a single step's) across every job, most recent first. Pass limit=0 for the default of 100 rows.
func (*Server) JobHistoryContext ¶ added in v0.0.6
JobHistoryContext is the context-aware variant of JobHistory.
func (*Server) JobHistorySeq ¶ added in v0.0.6
JobHistorySeq returns an iterator over the most recent job history entries across every SQL Server Agent job, up to limit.
func (*Server) JobsContext ¶
JobsContext is the context-aware variant of Jobs.
func (*Server) KillSession ¶
KillSession terminates a session by session ID.
func (*Server) KillSessionContext ¶
KillSessionContext is the context-aware variant of KillSession.
func (*Server) LanguageSeq ¶ added in v0.0.4
LanguageSeq returns an iterator over all languages installed on the server.
func (*Server) Languages ¶ added in v0.0.4
Languages returns every language installed on the server.
func (*Server) LanguagesContext ¶ added in v0.0.4
LanguagesContext is the context-aware variant of Languages.
func (*Server) LinkedServerSeq ¶ added in v0.0.6
LinkedServerSeq returns an iterator over all linked servers.
func (*Server) LinkedServers ¶
func (s *Server) LinkedServers() ([]*LinkedServer, error)
LinkedServers returns all linked servers defined on this instance.
func (*Server) LinkedServersContext ¶
func (s *Server) LinkedServersContext(ctx context.Context) ([]*LinkedServer, error)
LinkedServersContext is the context-aware variant of LinkedServers.
func (*Server) Login ¶ added in v0.0.5
Login returns a lightweight handle for name without querying the server at all — unlike LoginByName/LoginByNameContext, it doesn't verify the login exists or populate SID/LoginType/IsDisabled/etc. (they stay at their zero value). Every write method on *Login (AddServerRoleMemberContext, DisableContext, ChangePasswordContext, ...) only ever needs the login's name, never those cached fields, so this is sufficient for issuing further ALTER-style calls against a login the caller already knows exists — most commonly one it just created in the same operation. See Server.Database's doc comment for why this also matters under a WithScript-derived context.
func (*Server) LoginByName ¶ added in v0.0.4
LoginByName returns a single server-level login by name.
func (*Server) LoginByNameContext ¶ added in v0.0.4
LoginByNameContext is the context-aware variant of LoginByName.
func (*Server) LoginsContext ¶
LoginsContext is the context-aware variant of Logins.
func (*Server) MailProfileSeq ¶ added in v0.0.6
MailProfileSeq returns an iterator over all Database Mail profiles.
func (*Server) MailProfiles ¶
func (s *Server) MailProfiles() ([]*MailProfile, error)
MailProfiles returns all Database Mail profiles from msdb.
func (*Server) MailProfilesContext ¶
func (s *Server) MailProfilesContext(ctx context.Context) ([]*MailProfile, error)
MailProfilesContext is the context-aware variant of MailProfiles.
func (*Server) MemoryStats ¶ added in v0.0.4
func (s *Server) MemoryStats() (*ServerMemoryStats, error)
MemoryStats returns live server memory figures.
func (*Server) MemoryStatsContext ¶ added in v0.0.4
func (s *Server) MemoryStatsContext(ctx context.Context) (*ServerMemoryStats, error)
MemoryStatsContext is the context-aware variant of MemoryStats.
func (*Server) Operator ¶ added in v0.0.7
Operator returns a lightweight handle for an operator by name, without querying msdb — the operator-side counterpart of Server.Database. ID, EmailAddress, Category and every other cached field stay at their zero value; OperatorByName is what populates them.
Every write method on *Operator addresses the operator by name, so this handle is enough to keep operating on an operator the caller already knows exists — and is the only usable form under a WithScript context, where OperatorByNameContext's lookup is a real read and an operator whose sp_add_operator was merely collected is not there to find.
func (*Server) OperatorByName ¶ added in v0.0.6
OperatorByName returns a single operator by name.
func (*Server) OperatorByNameContext ¶ added in v0.0.6
OperatorByNameContext is the context-aware variant of OperatorByName.
func (*Server) OperatorSeq ¶ added in v0.0.6
OperatorSeq returns an iterator over all SQL Server Agent operators.
func (*Server) Operators ¶ added in v0.0.6
Operators returns every SQL Server Agent operator defined on the server.
func (*Server) OperatorsContext ¶ added in v0.0.6
OperatorsContext is the context-aware variant of Operators.
func (*Server) ProcessorInfo ¶ added in v0.0.5
func (s *Server) ProcessorInfo() (*ProcessorInfo, error)
ProcessorInfo returns server-wide CPU/NUMA topology.
func (*Server) ProcessorInfoContext ¶ added in v0.0.5
func (s *Server) ProcessorInfoContext(ctx context.Context) (*ProcessorInfo, error)
ProcessorInfoContext is the context-aware variant of ProcessorInfo.
func (*Server) ReadErrorLog ¶
func (s *Server) ReadErrorLog(logNumber int) ([]*ErrorLogEntry, error)
ReadErrorLog reads a SQL Server error log file. Pass logNumber=0 for the current log, 1 for the first archived log, etc.
func (*Server) ReadErrorLogContext ¶
ReadErrorLogContext is the context-aware variant of ReadErrorLog.
func (*Server) ReadErrorLogSeq ¶ added in v0.0.6
func (s *Server) ReadErrorLogSeq(ctx context.Context, logNumber int) iter.Seq2[*ErrorLogEntry, error]
ReadErrorLogSeq returns an iterator over the lines of the given SQL Server error log (0 = current, 1 = Errorlog.1, …).
func (*Server) Reconfigure ¶
Reconfigure applies pending sp_configure changes. Pass override=true to use RECONFIGURE WITH OVERRIDE (bypasses range checks).
func (*Server) ReconfigureContext ¶
ReconfigureContext is the context-aware variant of Reconfigure.
func (*Server) RemoveServerRoleMember ¶ added in v0.0.6
RemoveServerRoleMember removes member from a server role.
func (*Server) RemoveServerRoleMemberContext ¶ added in v0.0.6
func (s *Server) RemoveServerRoleMemberContext(ctx context.Context, roleName, memberName string) error
RemoveServerRoleMemberContext is the context-aware variant of RemoveServerRoleMember.
func (*Server) Restore ¶
func (s *Server) Restore(opts RestoreOptions) error
Restore performs a RESTORE DATABASE (or LOG) operation.
func (*Server) RestoreContext ¶
func (s *Server) RestoreContext(ctx context.Context, opts RestoreOptions) error
RestoreContext is the context-aware variant of Restore.
func (*Server) RevokeServerPermission ¶ added in v0.0.4
RevokeServerPermission revokes a server-level permission from principal.
func (*Server) RevokeServerPermissionContext ¶ added in v0.0.4
func (s *Server) RevokeServerPermissionContext(ctx context.Context, permission, principal string) error
RevokeServerPermissionContext is the context-aware variant of RevokeServerPermission. See GrantServerPermissionContext's doc comment for the USE master prefix.
func (*Server) RevokeServerPermissionWithOptions ¶ added in v0.0.8
func (s *Server) RevokeServerPermissionWithOptions(permission, principal string, opts PermissionOptions) error
RevokeServerPermissionWithOptions revokes a server-level permission from principal, honouring opts.
func (*Server) RevokeServerPermissionWithOptionsContext ¶ added in v0.0.8
func (s *Server) RevokeServerPermissionWithOptionsContext(ctx context.Context, permission, principal string, opts PermissionOptions) error
RevokeServerPermissionWithOptionsContext is the context-aware variant of RevokeServerPermissionWithOptions. See GrantServerPermissionContext for the USE master prefix.
func (*Server) Schedule ¶ added in v0.0.7
Schedule returns a lightweight handle for a shared schedule by name, without querying msdb — the schedule-side counterpart of Server.Database. ID, FreqType, ActiveStartDate and every other cached field stay at their zero value; ScheduleByName is what populates them.
Every write method on *Schedule that addresses the schedule by name (Job.AttachSchedule/DetachSchedule take the name directly) works from this handle, which makes it the only usable form under a WithScript context: ScheduleByNameContext's lookup is a real read, so a schedule whose sp_add_schedule was merely collected is not there to find.
func (*Server) ScheduleByName ¶ added in v0.0.6
ScheduleByName returns a single schedule by name.
func (*Server) ScheduleByNameContext ¶ added in v0.0.6
ScheduleByNameContext is the context-aware variant of ScheduleByName.
func (*Server) ScheduleSeq ¶ added in v0.0.6
ScheduleSeq returns an iterator over all SQL Server Agent schedules.
func (*Server) Schedules ¶ added in v0.0.6
Schedules returns every SQL Server Agent schedule defined on the server.
func (*Server) SchedulesContext ¶ added in v0.0.6
SchedulesContext is the context-aware variant of Schedules.
func (*Server) SecurityInfo ¶ added in v0.0.4
func (s *Server) SecurityInfo() (*ServerSecurityInfo, error)
SecurityInfo returns server-wide authentication settings.
func (*Server) SecurityInfoContext ¶ added in v0.0.4
func (s *Server) SecurityInfoContext(ctx context.Context) (*ServerSecurityInfo, error)
SecurityInfoContext is the context-aware variant of SecurityInfo.
func (*Server) SendMailContext ¶
func (s *Server) SendMailContext(ctx context.Context, profile, recipients, subject, body string) error
SendMailContext is the context-aware variant of SendMail.
func (*Server) ServerPermissionSeq ¶ added in v0.0.4
ServerPermissionSeq returns an iterator over all server-level GRANT/DENY entries.
func (*Server) ServerPermissions ¶ added in v0.0.4
func (s *Server) ServerPermissions() ([]*ServerPermissionEntry, error)
ServerPermissions returns every server-level GRANT/DENY entry.
func (*Server) ServerPermissionsContext ¶ added in v0.0.4
func (s *Server) ServerPermissionsContext(ctx context.Context) ([]*ServerPermissionEntry, error)
ServerPermissionsContext is the context-aware variant of ServerPermissions.
func (*Server) ServerRoleByName ¶ added in v0.0.6
func (s *Server) ServerRoleByName(name string) (*ServerRole, error)
ServerRoleByName returns a single server role by name, with its principal detail (SID, create/modify dates) filled in — ServerRolesContext leaves these out since Object Explorer's tree listing never needs them.
func (*Server) ServerRoleByNameContext ¶ added in v0.0.6
ServerRoleByNameContext is the context-aware variant of ServerRoleByName.
func (*Server) ServerRoleMemberSeq ¶ added in v0.0.6
func (s *Server) ServerRoleMemberSeq(ctx context.Context, roleName string) iter.Seq2[*RoleMember, error]
ServerRoleMemberSeq returns an iterator over a server role's members.
func (*Server) ServerRoleMembers ¶ added in v0.0.6
func (s *Server) ServerRoleMembers(roleName string) ([]*RoleMember, error)
ServerRoleMembers returns the direct members of a server role (logins or other server roles), with each member's principal type — ServerRolesContext/ServerRoleByNameContext only return member names, concatenated, with no type.
func (*Server) ServerRoleMembersContext ¶ added in v0.0.6
func (s *Server) ServerRoleMembersContext(ctx context.Context, roleName string) ([]*RoleMember, error)
ServerRoleMembersContext is the context-aware variant of ServerRoleMembers.
func (*Server) ServerRoleSeq ¶ added in v0.0.6
ServerRoleSeq returns an iterator over all server-level roles.
func (*Server) ServerRoles ¶
func (s *Server) ServerRoles() ([]*ServerRole, error)
ServerRoles returns all fixed and user-defined server roles.
func (*Server) ServerRolesContext ¶
func (s *Server) ServerRolesContext(ctx context.Context) ([]*ServerRole, error)
ServerRolesContext is the context-aware variant of ServerRoles.
func (*Server) VerifyBackup ¶ added in v0.0.5
VerifyBackup checks that the backup set on device is complete and readable (RESTORE VERIFYONLY), without restoring it.
type ServerInfo ¶
type ServerInfo struct {
Name string
Edition string
ProductVersion string
ProductLevel string
VersionMajor int
VersionMinor int
VersionBuild int
Collation string
IsClustered bool
IsHADREnabled bool
IsSingleUser bool
EngineEdition int
OSVersion string
Platform string
MaxConnections int
PhysicalMemoryMB int64
LogicalCPUCount int
DefaultDataPath string
DefaultLogPath string
DefaultBackupPath string
}
ServerInfo holds basic information about the connected SQL Server instance.
type ServerMemoryStats ¶ added in v0.0.4
type ServerMemoryStats struct {
PhysicalMemoryMB int64
AvailableMemoryMB int64
TargetServerMemoryMB int64
TotalServerMemoryMB int64
}
ServerMemoryStats holds live memory figures for the Server Properties > Memory page's "Current values" section — unlike the configured min/max server memory (an sp_configure option, see ConfigurationOption), these reflect the server's actual memory state right now.
type ServerPermissionEntry ¶ added in v0.0.4
type ServerPermissionEntry struct {
Principal string
PrincipalType string // e.g. "SQL_LOGIN", "SERVER_ROLE"
Grantor string
Permission string // e.g. "CONNECT SQL", "ALTER ANY LOGIN", "CONTROL SERVER"
State string // "GRANT", "GRANT_WITH_GRANT_OPTION", "DENY"
}
ServerPermissionEntry is one GRANT/DENY entry recorded at server scope, as reported by sys.server_permissions — SSMS's Server Properties > Permissions page and a Login's Securables page.
type ServerRole ¶
type ServerRole struct {
Name string
ID int
IsFixedRole bool
Owner string
Members []string
SID []byte
CreateDate time.Time
ModifyDate time.Time
// contains filtered or unexported fields
}
ServerRole represents a server-level role.
func (*ServerRole) ChangeOwner ¶ added in v0.0.6
func (r *ServerRole) ChangeOwner(newOwner string) error
ChangeOwner transfers ownership of the server role to a new principal.
func (*ServerRole) ChangeOwnerContext ¶ added in v0.0.6
func (r *ServerRole) ChangeOwnerContext(ctx context.Context, newOwner string) error
ChangeOwnerContext is the context-aware variant of ChangeOwner.
func (*ServerRole) Rename ¶ added in v0.0.6
func (r *ServerRole) Rename(newName string) error
Rename changes the server role's name.
func (*ServerRole) RenameContext ¶ added in v0.0.6
func (r *ServerRole) RenameContext(ctx context.Context, newName string) error
RenameContext is the context-aware variant of Rename.
type ServerSecurityInfo ¶ added in v0.0.4
type ServerSecurityInfo struct {
// AuthenticationMode is "WINDOWS" (Windows Authentication only) or
// "MIXED" (SQL Server and Windows Authentication).
AuthenticationMode string
}
ServerSecurityInfo holds server-wide authentication settings — SSMS's Server Properties > Security page. Login-audit level and the server proxy account live in the registry (xp_instance_regread), which gosmo deliberately does not touch (see README "Features intentionally excluded"); only what SERVERPROPERTY exposes is included here.
type ServerVersion ¶
type ServerVersion int
ServerVersion represents a SQL Server version.
const ( SQLServer2012 ServerVersion = 11 SQLServer2014 ServerVersion = 12 SQLServer2016 ServerVersion = 13 SQLServer2017 ServerVersion = 14 SQLServer2019 ServerVersion = 15 SQLServer2022 ServerVersion = 16 )
type SpaceInfo ¶
type SpaceInfo struct {
TotalMB float64
DataMB float64
LogMB float64
// UnallocatedMB is free space within the database's already-allocated
// data files (SSMS's Database Properties > General "Space available"),
// not free disk space — it can only shrink the database's on-disk
// footprint, not grow it, without a file autogrowth event.
UnallocatedMB float64
// AvailLogMB is the same free-space measure as UnallocatedMB, but for
// the log file(s) rather than the data file(s).
AvailLogMB float64
}
SpaceInfo holds space usage information for a database.
type Statistic ¶
type Statistic struct {
Name string
StatID int
IsAutoCreated bool
IsUserCreated bool
HasFilter bool
FilterDef string
LastUpdated time.Time
RowsSampled int64
TotalRows int64 // renamed from RowCount to avoid shadowing Table.RowCount()
Steps int
UnfilteredRows int64
NoRecompute bool
IsIncremental bool
ModificationCounter int64
// contains filtered or unexported fields
}
Statistic mirrors sys.stats for a table.
func (*Statistic) ColumnSeq ¶ added in v0.0.6
ColumnSeq returns an iterator over this statistic's columns, in stat-column order.
func (*Statistic) Columns ¶ added in v0.0.6
Columns returns this statistic's columns, in stat-column order. The leading column is what the statistic's histogram is built on; every column contributes to its density vector.
func (*Statistic) ColumnsContext ¶ added in v0.0.6
ColumnsContext is the context-aware variant of Columns.
func (*Statistic) DensityVector ¶ added in v0.0.6
func (st *Statistic) DensityVector() ([]*StatisticDensity, error)
DensityVector returns this statistic's density vector.
func (*Statistic) DensityVectorContext ¶ added in v0.0.6
func (st *Statistic) DensityVectorContext(ctx context.Context) ([]*StatisticDensity, error)
DensityVectorContext is the context-aware variant of DensityVector.
func (*Statistic) DensityVectorSeq ¶ added in v0.0.6
DensityVectorSeq returns an iterator over this statistic's density vector.
func (*Statistic) Drop ¶
Drop drops this statistic. Correct T-SQL syntax: DROP STATISTICS table_name.stat_name
func (*Statistic) DropContext ¶
DropContext is the context-aware variant of Drop.
func (*Statistic) Header ¶ added in v0.0.6
func (st *Statistic) Header() (*StatisticHeader, error)
Header returns this statistic's DBCC SHOW_STATISTICS header row.
func (*Statistic) HeaderContext ¶ added in v0.0.6
func (st *Statistic) HeaderContext(ctx context.Context) (*StatisticHeader, error)
HeaderContext is the context-aware variant of Header.
func (*Statistic) Histogram ¶ added in v0.0.6
func (st *Statistic) Histogram() ([]*StatisticHistogramStep, error)
Histogram returns this statistic's histogram steps.
func (*Statistic) HistogramContext ¶ added in v0.0.6
func (st *Statistic) HistogramContext(ctx context.Context) ([]*StatisticHistogramStep, error)
HistogramContext is the context-aware variant of Histogram.
func (*Statistic) HistogramSeq ¶ added in v0.0.6
HistogramSeq returns an iterator over this statistic's histogram steps.
type StatisticDensity ¶ added in v0.0.6
StatisticDensity is one row of DBCC SHOW_STATISTICS ... WITH DENSITY_VECTOR — one row per leading-column prefix of the statistic's key columns (e.g. a 2-column statistic yields 2 rows: {col1} and {col1,col2}).
type StatisticHeader ¶ added in v0.0.6
type StatisticHeader struct {
Updated string
Rows int64
RowsSampled int64
Steps int
Density float64
AverageKeyLength float64
StringIndex string
FilterExpression string
UnfilteredRows int64
PersistedSamplePercent float64
}
StatisticHeader mirrors the single result row of DBCC SHOW_STATISTICS ... WITH STAT_HEADER. Every field is zero-valued (Updated "") when the statistic exists as metadata but has never actually been populated (e.g. an auto-created statistic on a table nothing has queried yet) — SQL Server itself returns a header row of NULLs in that case.
type StatisticHistogramStep ¶ added in v0.0.6
type StatisticHistogramStep struct {
RangeHighKey string
RangeRows float64
EqRows float64
DistinctRangeRows int64
AvgRangeRows float64
}
StatisticHistogramStep is one step of DBCC SHOW_STATISTICS ... WITH HISTOGRAM. RangeHighKey is formatted as text since its underlying SQL type follows the statistic's leading key column (int, varchar, datetime, ...), not one fixed Go type.
type StoredProcedure ¶
type StoredProcedure struct {
ObjectID int
Schema string
Name string
Definition string
CreateDate time.Time
ModifyDate time.Time
}
StoredProcedure represents a stored procedure.
type Synonym ¶
type Synonym struct {
Name string
Schema string
ObjectID int
BaseObject string // fully qualified base object name
// contains filtered or unexported fields
}
Synonym mirrors sys.synonyms.
type Table ¶
type Table struct {
ObjectID int
Schema string
Name string
CreateDate time.Time
ModifyDate time.Time
HasReplicationFilter bool
IsMemoryOptimized bool
// contains filtered or unexported fields
}
Table mirrors Microsoft.SqlServer.Management.Smo.Table.
func (*Table) AlterColumn ¶ added in v0.0.4
func (t *Table) AlterColumn(col ColumnDefinition) error
AlterColumn changes an existing column's data type and/or nullability (ALTER TABLE ... ALTER COLUMN). Identity and default are not settable this way — SQL Server requires dropping and re-adding the column, or its default constraint, for those.
func (*Table) AlterColumnContext ¶ added in v0.0.4
func (t *Table) AlterColumnContext(ctx context.Context, col ColumnDefinition) error
AlterColumnContext is the context-aware variant of AlterColumn.
func (*Table) CheckConstraintSeq ¶ added in v0.0.6
CheckConstraintSeq returns an iterator over all CHECK constraints on the table.
func (*Table) CheckConstraints ¶
func (t *Table) CheckConstraints() ([]*CheckConstraint, error)
CheckConstraints returns all CHECK constraints on the table.
func (*Table) CheckConstraintsContext ¶
func (t *Table) CheckConstraintsContext(ctx context.Context) ([]*CheckConstraint, error)
CheckConstraintsContext is the context-aware variant of CheckConstraints.
func (*Table) CheckWhereSyntax ¶ added in v0.0.6
CheckWhereSyntax validates a WHERE predicate against the table without scanning any data (SSMS's "Check Syntax" action for a filtered index or statistic's predicate).
func (*Table) CheckWhereSyntaxContext ¶ added in v0.0.6
CheckWhereSyntaxContext is the context-aware variant of CheckWhereSyntax.
func (*Table) ColumnSeq ¶
ColumnSeq returns an iterator over all columns in the table, in ordinal order.
func (*Table) ColumnsContext ¶
ColumnsContext is the context-aware variant of Columns.
func (*Table) CountWhere ¶ added in v0.0.6
CountWhere returns the number of rows in the table matching a WHERE predicate — used to estimate qualifying rows for a filtered index or filtered statistic's predicate (SSMS's "Estimate Rows" action).
func (*Table) CountWhereContext ¶ added in v0.0.6
CountWhereContext is the context-aware variant of CountWhere. predicate is interpolated as-is after WHERE; callers pass a filter expression already captured from the server (e.g. an index or statistic's own FilterDefinition), not raw user input.
func (*Table) CreateIndex ¶
func (t *Table) CreateIndex(req CreateIndexRequest) error
CreateIndex creates a new index on the table.
func (*Table) CreateIndexContext ¶
func (t *Table) CreateIndexContext(ctx context.Context, req CreateIndexRequest) error
CreateIndexContext is the context-aware variant of CreateIndex.
func (*Table) CreateStatistic ¶
CreateStatistic creates a user-defined statistic on one or more columns.
func (*Table) CreateStatisticContext ¶
func (t *Table) CreateStatisticContext(ctx context.Context, name string, columns []string, samplePct int) error
CreateStatisticContext is the context-aware variant of CreateStatistic.
func (*Table) Detail ¶ added in v0.0.5
func (t *Table) Detail() (*TableDetail, error)
Detail returns TableDetail for the table.
func (*Table) DetailContext ¶ added in v0.0.5
func (t *Table) DetailContext(ctx context.Context) (*TableDetail, error)
DetailContext is the context-aware variant of Detail.
func (*Table) ForeignKeySeq ¶
ForeignKeySeq returns an iterator over all foreign keys on the table.
func (*Table) ForeignKeys ¶
func (t *Table) ForeignKeys() ([]*ForeignKey, error)
ForeignKeys returns all foreign keys on the table.
func (*Table) ForeignKeysContext ¶
func (t *Table) ForeignKeysContext(ctx context.Context) ([]*ForeignKey, error)
ForeignKeysContext is the context-aware variant of ForeignKeys.
func (*Table) FragmentationStats ¶
func (t *Table) FragmentationStats(mode string) ([]*IndexFragmentation, error)
FragmentationStats returns fragmentation info for all indexes on the table. mode must be one of "LIMITED" (fast, default), "SAMPLED", or "DETAILED".
func (*Table) FragmentationStatsContext ¶
func (t *Table) FragmentationStatsContext(ctx context.Context, mode string) ([]*IndexFragmentation, error)
FragmentationStatsContext is the context-aware variant of FragmentationStats.
func (*Table) FragmentationStatsSeq ¶ added in v0.0.6
func (t *Table) FragmentationStatsSeq(ctx context.Context, mode string) iter.Seq2[*IndexFragmentation, error]
FragmentationStatsSeq returns an iterator over fragmentation info for all indexes on the table. mode must be one of "LIMITED" (fast, default), "SAMPLED", or "DETAILED".
func (*Table) IndexesContext ¶
IndexesContext is the context-aware variant of Indexes.
func (*Table) PartitionSeq ¶ added in v0.0.5
PartitionSeq returns an iterator over per-partition row counts for the table.
func (*Table) Partitions ¶
func (t *Table) Partitions() ([]*PartitionInfo, error)
Partitions returns per-partition row counts and compression for the table.
func (*Table) PartitionsContext ¶ added in v0.0.5
func (t *Table) PartitionsContext(ctx context.Context) ([]*PartitionInfo, error)
PartitionsContext is the context-aware variant of Partitions. A non-partitioned table still returns exactly one row (partition number 1), same as sys.partitions itself.
func (*Table) RebuildAllIndexes ¶
RebuildAllIndexes rebuilds all indexes on the table (ALTER INDEX ALL ... REBUILD).
func (*Table) RebuildAllIndexesContext ¶
RebuildAllIndexesContext is the context-aware variant of RebuildAllIndexes.
func (*Table) RowCountContext ¶
RowCountContext is the context-aware variant of RowCount.
func (*Table) SpaceUsed ¶ added in v0.0.5
func (t *Table) SpaceUsed() (*TableSpaceInfo, error)
SpaceUsed returns space usage for the table.
func (*Table) SpaceUsedContext ¶ added in v0.0.5
func (t *Table) SpaceUsedContext(ctx context.Context) (*TableSpaceInfo, error)
SpaceUsedContext is the context-aware variant of SpaceUsed.
func (*Table) StatisticSeq ¶
StatisticSeq returns an iterator over all statistics on the table.
func (*Table) Statistics ¶
Statistics returns all statistics objects for the table.
func (*Table) StatisticsContext ¶
StatisticsContext is the context-aware variant of Statistics.
func (*Table) TriggerSeq ¶ added in v0.0.4
TriggerSeq returns an iterator over all DML triggers attached to the table.
func (*Table) TriggersContext ¶ added in v0.0.4
TriggersContext is the context-aware variant of Triggers.
func (*Table) TruncateTable ¶
TruncateTable truncates a table.
func (*Table) TruncateTableContext ¶
TruncateTableContext is the context-aware variant of TruncateTable.
func (*Table) UpdateAllStatistics ¶
UpdateAllStatistics updates all statistics on the table.
type TableChangeTracking ¶ added in v0.0.4
TableChangeTracking describes one user table's change tracking state.
type TableDetail ¶ added in v0.0.5
type TableDetail struct {
SchemaOwner string
LockEscalation string // e.g. "TABLE", "AUTO", "DISABLE"
UsesAnsiNulls bool
IsReplicated bool
IsTrackedByCDC bool
TemporalType string // e.g. "NON_TEMPORAL_TABLE", "SYSTEM_VERSIONED_TEMPORAL_TABLE"
Durability string // "SCHEMA_AND_DATA" or "SCHEMA_ONLY" — memory-optimized tables only
LedgerType string // e.g. "NON_LEDGER_TABLE", "APPEND_ONLY_LEDGER_TABLE"
PrimaryKeyName string // "" if the table has no primary key
DataSpace string // filegroup (or partition scheme) backing the heap/clustered index
}
TableDetail holds the sys.tables columns and related lookups Table itself doesn't carry (Table is also used to populate the Object Explorer tree and the scripter, so it stays lean) — SSMS's Table Properties > General page's "Object details" and "Dependencies" sections.
type TableSpaceInfo ¶ added in v0.0.5
type TableSpaceInfo struct {
ReservedKB int64
DataKB int64
IndexKB int64
LOBKB int64
UnusedKB int64
FileGroup string
}
TableSpaceInfo holds space usage for a table (SSMS's Table Properties > Storage page), mirroring the classic sp_spaceused breakdown: DataKB is the heap/clustered index's own row data, IndexKB is every other (nonclustered) index's row data, LOBKB is off-row large-object storage, and UnusedKB is reserved-but-not-yet-used space within already allocated extents.
type Trigger ¶
type Trigger struct {
Name string
TableName string
Schema string
IsEnabled bool
Events []string
Definition string
}
Trigger represents a DML trigger attached to a table.
type User ¶
type User struct {
Name string
ID int
UserType string // "SQL_USER", "WINDOWS_USER", "WINDOWS_GROUP", etc.
DefaultSchema string
AuthType string
CreateDate time.Time
ModifyDate time.Time
SID []byte
// LoginName is the server login this user's SID matches, or empty if
// none does — only populated by UserByNameContext (UsersContext's
// tree-listing query doesn't join sys.server_principals). A blank
// LoginName is ambiguous by itself: check AuthType too. A genuine
// CREATE USER ... WITHOUT LOGIN reports AuthType "NONE", while a user
// created FOR LOGIN whose login was later dropped keeps AuthType
// "INSTANCE" with no matching login, i.e. orphaned.
LoginName string
// LoginDisabled is only meaningful when LoginName is non-empty.
LoginDisabled bool
// contains filtered or unexported fields
}
User mirrors Microsoft.SqlServer.Management.Smo.User.
func (*User) AddToRoleContext ¶ added in v0.0.6
AddToRoleContext is the context-aware variant of AddToRole.
func (*User) Deny ¶
func (u *User) Deny(permission ObjectPermission, objectSchema, objectName string) error
Deny denies a permission on a schema-qualified object to the user.
func (*User) DenyContext ¶
func (u *User) DenyContext(ctx context.Context, permission ObjectPermission, objectSchema, objectName string) error
DenyContext is the context-aware variant of Deny.
func (*User) DropContext ¶ added in v0.0.6
DropContext is the context-aware variant of Drop.
func (*User) Grant ¶
func (u *User) Grant(permission ObjectPermission, objectSchema, objectName string) error
Grant grants a permission on a schema-qualified object to the user.
func (*User) GrantContext ¶
func (u *User) GrantContext(ctx context.Context, permission ObjectPermission, objectSchema, objectName string) error
GrantContext is the context-aware variant of Grant.
func (*User) RemoveFromRole ¶
RemoveFromRole removes the user from a database role.
func (*User) RemoveFromRoleContext ¶ added in v0.0.6
RemoveFromRoleContext is the context-aware variant of RemoveFromRole.
func (*User) RenameContext ¶ added in v0.0.5
RenameContext is the context-aware variant of Rename.
func (*User) Revoke ¶
func (u *User) Revoke(permission ObjectPermission, objectSchema, objectName string) error
Revoke revokes a permission on a schema-qualified object from the user.
func (*User) RevokeContext ¶
func (u *User) RevokeContext(ctx context.Context, permission ObjectPermission, objectSchema, objectName string) error
RevokeContext is the context-aware variant of Revoke.
func (*User) SetDefaultSchema ¶ added in v0.0.5
SetDefaultSchema changes the user's default schema.
func (*User) SetDefaultSchemaContext ¶ added in v0.0.5
SetDefaultSchemaContext is the context-aware variant of SetDefaultSchema.
Source Files
¶
- agent_alert.go
- agent_category.go
- agent_job.go
- agent_operator.go
- agent_schedule.go
- auth.go
- azuread_import.go
- backup.go
- bulkcopy.go
- catalog.go
- change_tracking.go
- column_permission.go
- database.go
- database_files.go
- database_options.go
- database_role.go
- database_scoped_config.go
- dependency.go
- effective_permission.go
- errors.go
- executionplan.go
- extended_properties.go
- function.go
- helpers.go
- index.go
- iter.go
- kerberos.go
- login.go
- partition.go
- permission_options.go
- procedure.go
- query_store.go
- quoting.go
- retry.go
- schema_user.go
- script.go
- scripter.go
- search.go
- securable_search.go
- security.go
- sequence_synonym.go
- server.go
- server_config.go
- server_security.go
- statistics.go
- table.go
- types.go
- view.go
Directories
¶
| Path | Synopsis |
|---|---|
|
Command examples is a guided tour of gosmo: connect, inspect the instance, build a throwaway database with schemas, tables, indexes, a sequence and a procedure, script it, then drop it again.
|
Command examples is a guided tour of gosmo: connect, inspect the instance, build a throwaway database with schemas, tables, indexes, a sequence and a procedure, script it, then drop it again. |
|
backup
command
Command backup demonstrates gosmo's backup and restore surface: a full backup with live progress reporting, reading a backup device's headers and file list, verifying it, a differential and a log backup appended to the same media, the backup history in msdb, and a restore that relocates the database's files.
|
Command backup demonstrates gosmo's backup and restore surface: a full backup with live progress reporting, reading a backup device's headers and file list, verifying it, a differential and a log backup appended to the same media, the backup history in msdb, and a restore that relocates the database's files. |
|
bulkcopy
command
Command bulkcopy demonstrates Database.BulkInsert — gosmo's bcp-equivalent load path.
|
Command bulkcopy demonstrates Database.BulkInsert — gosmo's bcp-equivalent load path. |
|
diagnostic
command
Command diagnostic demonstrates the parts of gosmo you reach for when something is wrong or you are exploring an unfamiliar instance: structured SQL Server errors, the transient-failure test, execution plans, calling procedures with output parameters, object search and dependency graphs, the bulk catalog snapshot, and the server-health DMV reads.
|
Command diagnostic demonstrates the parts of gosmo you reach for when something is wrong or you are exploring an unfamiliar instance: structured SQL Server errors, the transient-failure test, execution plans, calling procedures with output parameters, object search and dependency graphs, the bulk catalog snapshot, and the server-health DMV reads. |
|
internal/demo
Package demo holds the connection factory and output helpers the gosmo example programs share, so each example file is only about its own topic.
|
Package demo holds the connection factory and output helpers the gosmo example programs share, so each example file is only about its own topic. |
|
iterators
command
Command iterators demonstrates gosmo's *Seq API.
|
Command iterators demonstrates gosmo's *Seq API. |
|
jobs
command
Command jobs demonstrates gosmo's SQL Server Agent surface: categories, operators, a job with several steps and branching, a shared schedule attached to it, running it, reading its history, and alerts.
|
Command jobs demonstrates gosmo's SQL Server Agent surface: categories, operators, a job with several steps and branching, a shared schedule attached to it, running it, reading its history, and alerts. |
|
maintain
command
Command maintain demonstrates the routine-maintenance side of gosmo: index fragmentation and rebuilds, statistics with their header, histogram and density vector, database files and filegroups, space usage, database options and scoped configurations, change tracking, and Query Store.
|
Command maintain demonstrates the routine-maintenance side of gosmo: index fragmentation and rebuilds, statistics with their header, histogram and density vector, database files and filegroups, space usage, database options and scoped configurations, change tracking, and Query Store. |
|
scripting
command
Command scripting demonstrates the two ways gosmo produces T-SQL text instead of changing the server:
|
Command scripting demonstrates the two ways gosmo produces T-SQL text instead of changing the server: |
|
security
command
Command security demonstrates gosmo's principal and permission surface: creating a login, mapping it into a database as a user, role membership at both levels, granting and denying object/schema/database/server permissions, and reading the permission state back from either direction.
|
Command security demonstrates gosmo's principal and permission surface: creating a login, mapping it into a database as a user, role membership at both levels, granting and denying object/schema/database/server permissions, and reading the permission state back from either direction. |
|
Package version holds gosmo's own version metadata, mirroring the same pattern gossms/internal/version/version.go uses.
|
Package version holds gosmo's own version metadata, mirroring the same pattern gossms/internal/version/version.go uses. |