日志文件类错误“由于尚未创建对象,因此无法执行此操作。”

时间:2016-01-08 18:56:41

标签: smo

我们希望为新的SQL Server安装自动化一些管理操作,因此我们开始研究 LogFile Class 但是这个类不允许我们运行ALTER()方法来更改日志文件位置。也不要让我们添加新文件和删除和现有文件。有谁知道这个班级的内部:)?

注意:我知道我们可以运行SQL查询并运行ALTER DATABASE MODIFY FILE并复制文件并重新启动db。这个问题是本课程特有的。

我还尝试更改现有文件而不是创建新文件并删除现有文件,并且它会抛出相同的错误。

ERROR “{”DropFile'DBAUtility_log'丢失失败。 “}”

{“由于尚未创建对象,因此无法执行此操作。”}

    class Program
    {
        static void Main(string[] args)
        {
            Server srv = new Server("xx");
            Database db = default(Database);
            db = srv.Databases["DBAUtility"];
            //LogFile LF = new LogFile(srv.Databases.ItemById(0),'DBAUtility_log');
            //Console.WriteLine("DB:", srv.Databases.Count());
            Console.WriteLine(srv.Name);
            Console.WriteLine("DBName" + srv.Databases.ItemById(5).ToString());


            LogFile lf = new LogFile();

            Console.WriteLine("LF:" + lf.ToString());
            lf.Parent = db;

            lf.Name = "DBAUtility_NEWLOG";
            lf.FileName = "M:\\DBFiles\\SQLlog\\1\\DBAUtility_1.ldf";
            lf.Create();
            LogFile lf2 = new LogFile();

            lf2.Parent = db;
            lf2.Name = "DBAUtility_log";
            lf2.FileName = "C:\\Install\\DBAUtility_1.ldf";
            lf2.Drop(); //ERROR HERE
        }
    }

1 个答案:

答案 0 :(得分:0)

为此数据库

创建一个日志文件
$LogFileName = $db.name + '_Log'
$LogFile = New-Object ('Microsoft.SqlServer.Management.SMO.LogFile') ($db, $LogFileName)
$db.LogFiles.Add($LogFile)
$LogFile.FileName = $LogFileName + '.ldf'
$LogFile.Size = $logfilesize * 1024
$LogFile.GrowthType = 'KB'
$LogFile.Growth = $logfilegrowth * 1024
$LogFile.MaxSize = -1
$db.Create()