Tag: smo

SQL Server SMO – 备份 – 如何确定失败/成功?

如果使用SMO执行备份,则在成功完成后,我将SqlError测试为null,考虑到备份已完成且没有错误: 但是,正如您所看到的,它实际上返回了0级数字3014的错误,这意味着成功。 所以问题是: 问:如何确定备份是否成功完成,以及如何干净地处理这些消息和状态? 我担心这里有多个“陷阱”,我不想在以后这个代码生产的时候咬我的屁股:)

如何使用SMO创建本地数据库实例

我已经安装了localdatabase并创建了一个共享实例,并且使用smo我可以创建localdatabase。 根据我的要求,我必须创建一个localdb共享实例。 我正在使用像这样的SMO创建本地数据库。 ServerConnection serConn = new ServerConnection(@”(localdb)\.\sharedIns”); Server ldbServer = new Server(serConn); Database db = new Database(ldbServer , “databaseName”); db.Create(); 在创建数据库之前,我使用sqllocaldb.exe通过命令提示符创建共享实例 c:\>sqllocaldb create testIns c:\>sqllocaldb share testIn sharedIns 我想删除这些手动步骤并使用SMO创建localdb共享实例。 这该怎么做?

如果sqlexpress位于安装了SQLSERVER2008的同一台机器上,则SmoApplication.EnumAvailableSqlServers()不会列出默认实例

我正在使用SMO来查找网络的可用sqlservers。但是在我运行的一台机器上 应用程序它不提供默认实例名称,但它给出了所有其他机器 命名和默认实例将显示。 观察我的场景。 例如:机器名称:rkwrk3-vm-sr(从我运行app的本地机器,其中 sqlserver2008安装) 在这实际上我有sql2008作为默认实例和sqlexpress(2005)作为命名实例… 但是它只显示了一个实例rkwrk3-vm-sr \ sqlexpress,而且它不会显示rkwrk3-vm-sr。 和其他一些机器Hr-2k3-tm(安装了sqlserver2005) 为此它显示Hr-2k3-tm和Hr-2k3-tm / sqlexpress 我该如何解决这个问题。任何帮助都会得到极大的赞赏。 提前致谢。

使用SMO编写PARTIAL数据内容的脚本(仅限与WHERE子句匹配的行)

我使用SMO用SQL服务器数据库的数据填充SQL Compact数据库。 这是我实际使用的代码: foreach(Table l_tblCurrent in l_dbDatabase.Tables) { if(l_tblCurrent.IsSystemObject) continue; ScriptingOptions l_scOptions = new ScriptingOptions(); l_scOptions.NoIdentities = true; l_scOptions.NoCollation = true; l_scOptions.NoCommandTerminator = true; l_scOptions.NoFileGroup = true; l_scOptions.ScriptSchema = true; l_scOptions.ScriptData = true; foreach(string l_strCurrent in l_tblCurrent.EnumScript(l_scOptions)) { l_sccDBFCommand.CommandText = l_strCurrent.Replace(“[dbo].”, “”); l_sccDBFCommand.ExecuteNonQuery(); } } 它工作得很好,但对于几个表,我不想复制所有行。 我希望只能选择与要复制的WHERE子句相匹配的行。 可能吗 ?

使用Smo.Backup将SQL Server数据库备份到字符串

我正在尝试制作一个可以帮助我进行服务器备份的小应用程序。 该应用程序将在我的家用PC上运行,因此主要目标是能够连接到外部服务器,备份所选数据库,将备份内容转储到字符串或其他东西,以便我可以将其写在我的PC磁盘而不是服务器上磁盘。 我做了那个可以写在服务器磁盘上的东西,但是我希望能够在我的PC磁盘上写下备份的结果。 private bool BackupDatabase() { try { // Filename string sFileName = string.Format(“{0}\\{1}.bak”, _sWhereToBackup, DatabaseName); // Connection string sConnectionString = String.Format( “Data Source=tcp:{0};Initial Catalog={1};User ID={2};Pwd={3};”, DatabaseHost, DatabaseName, DatabaseUsername, DatabasePassword); SqlConnection oSqlConnection = new SqlConnection(sConnectionString); Server oServer = new Server(new ServerConnection(oSqlConnection)); // Backup Backup backup = new Backup(); backup.Action = BackupActionType.Database; backup.Database = DatabaseName; […]

使用SMO获取表默认值的创建脚本

我正在尝试为我正在使用的本地数据库创建数据库脚本编写器工具。 我已经能够为表,主键,索引和外键生成创建脚本,但我找不到任何方法来为表默认值生成创建脚本。 对于索引,它就像 foreach (Index index in table.Indexes) { ScriptingOptions drop = new ScriptingOptions(); drop.ScriptDrops = true; drop.IncludeIfNotExists = true; foreach (string dropstring in index.Script(drop)) { createScript.Append(dropstring); } ScriptingOptions create = new ScriptingOptions(); create.IncludeIfNotExists = true; foreach (string createstring in index.Script(create)) { createScript.Append(createstring); } } 但Table对象没有Defaults属性。 是否有其他方法为表默认值生成脚本?

使用游标使用C#从SQL Server读取时间序列数据?

我有一个包含时间序列数据的大型数据库(5000万行)。 [datetime]列上有一个聚簇索引,可确保表始终按时间顺序排序。 在逐行的基础上,将表的行读出到C#应用程序中的最高效的方法是什么?

SSMS SMO对象:获取查询结果

我遇到了本教程,了解如何使用GO语句执行SQL脚本。 现在我想知道我能得到消息TAB的输出。 使用几个GO语句,输出将如下所示: 1行受影响 受影响的912行 … 但是server.ConnectionContext.ExecuteNonQuery()只能返回一个int,而我需要所有的文本。 如果查询的某些部分存在某些错误,则应将其也放在输出中。 任何帮助,将不胜感激。

如何使用C#测试SSAS中与数据源的连接

我在远程服务器上的Analysis Services中有一个数据库。 它包含位于另一个远程服务器上的另一个数据库的数据源。 我正在尝试使用C#编写连接测试,它将检查两个数据库之间的数据库连接。 我无法使用ADOMD.NET执行此操作。 我目前正在考虑使用SMO来做到这一点,但到目前为止我还没有运气。 我非常感谢任何建议或意见。 更新: 经过进一步研究,我提出了以下测试(请注意,我打算稍后添加更多try..catch块和断言)。 此外,它使用C:\ Program Files \ Microsoft SQL Server \ 100 \ SDK \ Assemblies \ Microsoft.AnalysisServices.DLL来访问Server,Database和DataSource类。 class ConnectivityTests { // Variables String serverName = “”; String databaseName = “”; String dataSourceName = “”; [Test] public void TestDataSourceConnection() { // Creates an instance of the Server Server server […]

使用smo在SqlServer中创建用户的问题

1)如果已经有登录’user1’,那么我通过调用CreateDatabaseUser函数为数据库’db1’创建用户’user1′ 2)否则,我使用CreateServerLogin创建一个密码为“password1”的登录名“user1”,默认数据库为“db1”(仅在创建db1之后),然后使用CreateDatabaseUser为“db1”创建用户“user1” 方法(2)在newUser.Create();抛出exceptionnewUser.Create(); 在CreateDatabaseUser 说, Microsoft.SqlServer.Management.Smo.FailedOperationException: Create failed for User ‘user1’. —> Microsoft.SqlServer.Management.Common.ExecutionFailureException: An exception occurred while executing a Transact-SQL statement or batch. — > System.Data.SqlClient.SqlException: ‘[user1]’ is not a valid login or you do not have permission. Microsoft.SqlServer.Management.Smo.FailedOperationException: Create failed for User ‘user1’. —> Microsoft.SqlServer.Management.Common.ExecutionFailureException: An exception occurred while executing a Transact-SQL statement or […]