SQL SERVER SQL Agent服務使用小結

來源:互聯網
上載者:User
1.在查詢分析器理啟動或停止SQL Agent服務
  啟動

  use master
  go
  xp_cmdshell 'net start SQLSERVERAGENT'

  停止

  use master
  go
  xp_cmdshell 'net stop SQLSERVERAGENT'

  將服務的啟動從手工方式改為自動啟動方式

  exec xp_cmdshell 'scm -Action 7 -Service MSSQLserver -SVCStartType 2'

  直接用命令列執行引號內的內容也可以。

  2、啟動不正常原因和處理
  表面上看SQL Server agent 服務啟動正常,但在查看作業的屬性與作業記錄時都出現如下錯誤:
  錯誤14258:當SQLServerAgent正在啟動時,無法執行此操作。請稍後再試。

  可能原因:
  選擇了"使用 Windows NT 纖程",具體原因不明。

  解決方案:
  企業管理器--右鍵SQL執行個體--屬性--處理器--取消選擇"使用 Windows NT 纖程"
  然後重新啟動sql服務

  修改了系統密碼
  解決方案:
  a. 我的電腦--控制台--管理工具--服務--右鍵 MSSQLSERVER--屬性--登陸--登陸身份--選擇"本地系統帳戶"
  或:
  b.我的電腦--控制台--管理工具--服務--右鍵 MSSQLSERVER--屬性--登陸--登陸身份--選擇"此帳戶"--選擇 administrator ,密碼和確認密碼中輸入你的administrator密碼.

  兩者的區別:
  選擇第一種方式,以後修改了administrator密碼,不用再調整(但要求登陸作業系統的是系統管理員)

  資料庫非法DOWN機出現故障
  解決方案:
  用安裝光碟片重新安裝,然後選擇‘進階選項’—‘重建註冊表’,然後一路下去……

/*
**取得某項服務是否啟動

HOME
haoK.Y

**2004-10-20
根據 net start返回的結果判斷某項服務是否啟動

**樣本
DECLARE @IsOnWorking BIT
EXEC spServiceIsOnWorking 'MSSQL$NEWINSTANCE', @IsOnWorking OUTPUT
SELECT @IsOnWorking

*/
CREATE PROCEDURE spServiceIsOnWorking
(
@ServiceName VARCHAR(100),
@IsOnWorking BIT OUTPUT
)
AS
SET NOCOUNT ON

CREATE TABLE #Output
(
OT VARCHAR(100)
)

INSERT INTO #Output
EXEC master..xp_cmdshell 'net start'

SET @IsOnWorking =
CASE
WHEN EXISTS (
SELECT TOP 1 1
FROM #Output
WHERE OT LIKE '%' + @ServiceName + '%'
) THEN 1
ELSE 0
END

DROP TABLE #Output

SET NOCOUNT OFF
GO

SQL的分布式關聯性物件(SQL-DMO)庫允許你的VB6應用程式自動地同SQL伺服器進行互動操作。這對於擷取關於SQL伺服器的資訊很有用,例如伺服器的狀態或者網路上的可用伺服器。


<br />


要使用SQL-DMO庫,就要設定一個對“微軟SQL-DMO物件程式庫”的參照。

Application對象的ListAvailableSQLServers方法會返回一個NameList對象,它包含有網路上可用伺服器的列表。下面的代碼顯示了一個使用這個方法來填充列表框控制項的方法:

Dim objSQLApp As SQLDMO.Application
Dim objNameList As SQLDMO.NameList
Dim intCount As Integer

Set objSQLApp = New SQLDMO.Application

Set objNameList = objSQLApp.ListAvailableSQLServers()

For intCount = 1 To objNameList.Count
    Call List1.AddItem(objNameList.Item(intCount))
Next

SQL-DMO庫裡另外一個有用的對象是SQLServer對象。這個對象能夠被用來擷取關於特定SQL伺服器的資訊。Connect方法會建立到資料庫伺服器的串連並接受三個參數:資料庫名、使用者名稱和密碼。一旦對象的串連成功了,關於伺服器的資訊就能夠被取回:

Dim objSQLServer As SQLDMO.SQLServer

Set objSQLServer = New SQLDMO.SQLServer
objSQLServer.LoginSecure = True
Call objSQLServer.Connect("MyServerName", "username", "password")

Debug.PrintobjSQLServer.Name
Debug.PrintobjSQLServer.HostName
Debug.PrintobjSQLServer.Status

恢複使用 xp_cmdshell

前提需要工具:SQL Query Analyzer和SqlExec Sunx Version
  
第一部分:
  
有關去掉xp_cmdshell來保護系統的分析總結:
首Crowdsourced Security Testing道一下語句:
1.去掉xp_cmdshell擴充過程的方法是使用如下語句:


if exists (select * from dbo.sysobjects where id=object_id(N'[dbo].[xpcmdshell]') and OBJECTPROPERTY(id,N'IsExtendedProc')=1)exec sp_dropextendedproc N'[dbo].[xp_cmdshell]'


2.添加xp_cmdshell擴充過程的方法是使用如下語句:

sp_addextendedproc xp_cmdshell,@dllname='xplog70.dll'


現在看看現象:
我們在取得SA許可權後遠程用Sqlexec執行cmd命令,出現提示SQL_ERROR,那麼很可能是去掉了xp_cmdshell。
現在來看看被去掉xp_cmdshell後恢複的兩種方法:
  
方法一、使用SQL Query Analyzer串連對方後直接寫入,挺方便sp_addextendedproc xp_cmdshell,@dllname='xplog70.dll'
方法二、使用SqlExec Sunx Version首先在SqlExec Sunx Version的Format選項裡填上%s,在CMD選項裡輸入sp_addextendedproc 'xp_cmdshell','xpsql70.dll'或者對Sql2000情況下使用sp_addextendedproc 'xp_cmdshell','xplog70.dll'另外使用SqlExec Sunx Version來去除xp_cmdshell的方法和加的時候選擇條件一樣,然後輸入sp_dropextendedproc 'xp_cmdshell'就可以了

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.