none
SQL Server 2005中sql agent的警报系统无法配置为数据库邮件 RRS feed

  • 问题

  • 操作系统:windows server 2003 R2 标准版+sp2

    SQL:SQL 2005标准版+sp4

    问题:

    用数据库管理员登陆后,成功配置了数据库邮件,并且测试成功。在sql server代理----〉属性----〉警报系统----〉邮件会话----〉启用邮件配置文件,选择“数据库邮件”并保存退出。但是再次打开却发现设置变成了“SQL Mail”,无论如何都无法配置为“数据库邮件”。

    请问有什么建议么?

    2012年11月14日 2:20

答案

  • 启用邮件配置文件应该会修改下面的注册表,你查一下你的注册表是什么?另外你有没有重启过SQL Server Agent?

    EXEC master.dbo.xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent',, N'UseDatabaseMail', N'REG_DWORD', 1

    • 已标记为答案 John_WANG 2012年11月15日 2:05
    2012年11月14日 8:32

全部回复

  • 我的是可以的啊

    是不是你没有开启数据库邮件功能?


    给我写信: QQ我:点击这里给我发消息

    2012年11月14日 2:54
  • 我的是可以的啊

    是不是你没有开启数据库邮件功能?


    给我写信: QQ我:点击这里给我发消息


    我的问题很奇怪!设置“数据库邮件”的时候并没有报错,但是保存退出后,再次打开,又变成了“sql mail”。重新启动代理服务也是这样,就是不让我设置使用“数据库邮件”。
    2012年11月14日 3:38
  • 是不是msdb没有开启serice broker

    ALTER DATABASE msdb SET ENABLE_BROKER;


    给我写信: QQ我:点击这里给我发消息

    2012年11月14日 3:53
  • Did you set db mail profile as public profile?
    2012年11月14日 4:05
  • 想问一下LZ配置文件,邮件帐户这些准备工作做好了吗?

    还有你点击保存的时候,可以看一下sql errorlog,里面应该会有记录的


    给我写信: QQ我:点击这里给我发消息

    2012年11月14日 5:07
  • 或者像rmiao大侠说的作为公共配置文件


    给我写信: QQ我:点击这里给我发消息

    2012年11月14日 5:15
  • 或者像rmiao大侠说的作为公共配置文件


    给我写信: QQ我:点击这里给我发消息


    已经配置好了。邮件测试也没有问题。
    2012年11月14日 5:33
  • 是不是msdb没有开启serice broker

    ALTER DATABASE msdb SET ENABLE_BROKER;


    给我写信: QQ我:点击这里给我发消息

    SELECT is_broker_enabled FROM sys.databases WHERE [name]='msdb'

     is_broker_enabled值为1,应该已经启用了吧。

    2012年11月14日 5:46
  • 已经启用了,我再想一下是不是其他原因造成的

    给我写信: QQ我:点击这里给我发消息

    2012年11月14日 5:52
  • 已经启用了,我再想一下是不是其他原因造成的

    给我写信: QQ我:点击这里给我发消息


    我用了 EXEC msdb.dbo.sp_send_dbmail 测试了发送邮件,都没有问题。就是没法在代理中配置。
    2012年11月14日 6:30
  • 你的数据库里的维护计划可以执行成功吗?会不会是sql代理有问题

    给我写信: QQ我:点击这里给我发消息

    2012年11月14日 8:25
  • 启用邮件配置文件应该会修改下面的注册表,你查一下你的注册表是什么?另外你有没有重启过SQL Server Agent?

    EXEC master.dbo.xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent',, N'UseDatabaseMail', N'REG_DWORD', 1

    • 已标记为答案 John_WANG 2012年11月15日 2:05
    2012年11月14日 8:32
  • kevinliu2大侠怎麽sql2008的注册表的项跟我的sql2005的不一样呢?我的没有\SQLServerAgent'

    而且不用这麽麻烦

    执行下面的sql语句就可以查看有没有配置数据库邮件了

    EXEC [sys].[sp_configure] 
    
    

    而且LZ说了已经发送过邮件了

     EXEC msdb.dbo.sp_send_dbmail 测试了发送邮件


    给我写信: QQ我:点击这里给我发消息

    2012年11月14日 9:04
  • 启用邮件配置文件应该会修改下面的注册表,你查一下你的注册表是什么?另外你有没有重启过SQL Server Agent?

    EXEC master.dbo.xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent',, N'UseDatabaseMail', N'REG_DWORD', 1

    运行这个以后,已配置成功了。十分感谢!

    EXEC master.dbo.xp_instance_regwrite
    	N'HKEY_LOCAL_MACHINE',
    	N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent',
    	N'UseDatabaseMail',
    	N'REG_DWORD',
    	1;
    EXEC master.dbo.xp_instance_regwrite
    	N'HKEY_LOCAL_MACHINE',
    	N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent',
    	N'DatabaseMailProfile',
    	N'REG_SZ',
    	N'Mail Profile';

    但是这个问题非常奇怪:

    1、SQL Server Management Studio中配置实效?我在windows server 2003和win7开发版环境中都没有设置成功。

    2、master.dbo.xp_instance_regwrite是修改注册表键值的吗?为什么我运行成功后,运行regedit也没有找到相应的注册表键值?

    2012年11月14日 9:36
  • LZ你有没有刷新一下注册表编辑器,或者重新打开注册表编辑器

    这两个都可以读写注册表

    EXEC master.[dbo].[xp_regwrite] 'HKEY_LOCAL_MACHINE',
        'SoftWare\Microsoft\Jet\4.0\Engines', 'SandBoxMode', 'REG_DWORD', 3
    
    EXEC master.[dbo].[xp_instance_regwrite] N'HKEY_LOCAL_MACHINE',
        N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent', N'DatabaseMailProfile',
        N'REG_SZ', N'Mail Profile';

    相关帖子:http://social.msdn.microsoft.com/Forums/zh-CN/sqlserverzhchs/thread/e8c41102-654c-405c-a824-bd50c453141d/

    http://social.msdn.microsoft.com/Forums/zh-CN/sqlserverzhchs/thread/6d0eff7e-a0d5-4099-a107-cc490dbd60c3

    不过在msdn找不到这两个存储过程的解释,应该是不公开的存储过程


    给我写信: QQ我:点击这里给我发消息


    2012年11月14日 12:17
  • 之前看过一篇关于安全的文章:

    -- 3) 利用xp_regxxxxx之类的存储过程写注册表项
    -- 这个方法只有sa账户或是sysadmin权限的帐户才可以使用.
    --执行exec xp_regread ''HKEY_LOCAL_MACHINE'', ''SECURITY\SAM\Domains\Account'', ''F''
    -- 如果碰到一个粗心的管理员,说不定就能得到管理员的密码.
    -- 加一个启动项什么的自然不在话下。
    --利用xp_regwrite写注册表项,直接把要执行的命令写入RUN启动项。
    EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\currentversion\run','shell','REG_SZ',
    'C:\windows\system32\cmd.exe /c net user hack hack /add'
     
    -- 如果有必要就把这些扩展都删除了
    --Xp_regaddmultistring (向注册表中增加项目)
    --Xp_regdeletekey (从注册表中删除一个键)
    --Xp_regdeletevalue (从注册表中删除一个键值)
    --Xp_regenumvalues (列举主键下的键值)
    --Xp_regread (读去一个主键下的键值)
    --Xp_regremovemultistring (从注册表中删除项目)
    --Xp_regwrite (向注册表中写入数据)


    给我写信: QQ我:点击这里给我发消息

    2012年11月14日 12:17
  • why drop system extended stored procedure? do you know the impact in SQL Server 2005 ? and how to drop ? why don't you just deny?
    2012年11月14日 12:54
  • 是文章里写的好不好,不是我自己的观点


    给我写信: QQ我:点击这里给我发消息

    2012年11月14日 13:17
  • 删除这些系统存储过程当然有风险

    因为sqlserver安装程序要写注册表,还有一些配置值也要读写注册表,例如启用tcp/IP协议,这些配置值都保存在注册表里的

    sqlserver利用这些系统存储过程来读写注册表

    例如,你在GUI界面里看到的一些配置值,实际上应该都是sqlserver利用这些系统存储过程读取注册表然后显示出来的

    注册表相当于一个小型数据库,sqlserver都把一些配置值放到注册表里保存


    给我写信: QQ我:点击这里给我发消息

    2012年11月14日 13:20
  • 是文章里写的好不好,不是我自己的观点


    给我写信: QQ我:点击这里给我发消息

    You have to do home work before copying something, not everything on the web are correct.

    • 已编辑 rmiao 2012年11月14日 14:03
    2012年11月14日 14:02
  • 启用邮件配置文件应该会修改下面的注册表,你查一下你的注册表是什么?另外你有没有重启过SQL Server Agent?

    EXEC master.dbo.xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent',, N'UseDatabaseMail', N'REG_DWORD', 1

    运行这个以后,已配置成功了。十分感谢!

    EXEC master.dbo.xp_instance_regwrite
    	N'HKEY_LOCAL_MACHINE',
    	N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent',
    	N'UseDatabaseMail',
    	N'REG_DWORD',
    	1;
    EXEC master.dbo.xp_instance_regwrite
    	N'HKEY_LOCAL_MACHINE',
    	N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent',
    	N'DatabaseMailProfile',
    	N'REG_SZ',
    	N'Mail Profile';

    但是这个问题非常奇怪:

    1、SQL Server Management Studio中配置实效?我在windows server 2003和win7开发版环境中都没有设置成功。

    2、master.dbo.xp_instance_regwrite是修改注册表键值的吗?为什么我运行成功后,运行regedit也没有找到相应的注册表键值?

    What's sql agent service account? Does it have local admin rights?
    2012年11月14日 14:05
  • 启用邮件配置文件应该会修改下面的注册表,你查一下你的注册表是什么?另外你有没有重启过SQL Server Agent?

    EXEC master.dbo.xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent',, N'UseDatabaseMail', N'REG_DWORD', 1

    运行这个以后,已配置成功了。十分感谢!

    EXEC master.dbo.xp_instance_regwrite
    	N'HKEY_LOCAL_MACHINE',
    	N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent',
    	N'UseDatabaseMail',
    	N'REG_DWORD',
    	1;
    EXEC master.dbo.xp_instance_regwrite
    	N'HKEY_LOCAL_MACHINE',
    	N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent',
    	N'DatabaseMailProfile',
    	N'REG_SZ',
    	N'Mail Profile';

    但是这个问题非常奇怪:

    1、SQL Server Management Studio中配置实效?我在windows server 2003和win7开发版环境中都没有设置成功。

    2、master.dbo.xp_instance_regwrite是修改注册表键值的吗?为什么我运行成功后,运行regedit也没有找到相应的注册表键值?

    What's sql agent service account? Does it have local admin rights?

    local system
    2012年11月15日 1:50
  • LZ你有没有刷新一下注册表编辑器,或者重新打开注册表编辑器

    这两个都可以读写注册表

    EXEC master.[dbo].[xp_regwrite] 'HKEY_LOCAL_MACHINE',
        'SoftWare\Microsoft\Jet\4.0\Engines', 'SandBoxMode', 'REG_DWORD', 3
    
    EXEC master.[dbo].[xp_instance_regwrite] N'HKEY_LOCAL_MACHINE',
        N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent', N'DatabaseMailProfile',
        N'REG_SZ', N'Mail Profile';

    相关帖子:http://social.msdn.microsoft.com/Forums/zh-CN/sqlserverzhchs/thread/e8c41102-654c-405c-a824-bd50c453141d/

    http://social.msdn.microsoft.com/Forums/zh-CN/sqlserverzhchs/thread/6d0eff7e-a0d5-4099-a107-cc490dbd60c3

    不过在msdn找不到这两个存储过程的解释,应该是不公开的存储过程


    给我写信: QQ我:点击这里给我发消息


    已经刷新了,甚至重新启动了计算机,仍旧没有找到这个注册表键值。

    但是,不管怎么样,代理使用数据库邮件却正常了。

    2012年11月15日 1:53
  • 十分感谢上面各位的帮助!
    2012年11月15日 2:05