// *************************************************************************** // Copyright (C) 1991-2003 SQLDev.Net // // $BeginHeader$ // // @file@: AddLogin.cpp // @author@: Gert E.R. Drapers (GertD@SQLDev.Net) // @description@: Example: Adding SQL Server Login using SQL-DMO // @remarks@: // @created@: 2003-02-18 // @lastsaved@: 2003-02-18 // // update history: // @version@ @initials@ @updatedate@ @release@ @description@ // 00000 GED 2003-02-18 v1.0.0.0 created // // @EndHeader@ // *************************************************************************** #define STRICT // strict type checking #define UNICODE // Unicode #define _UNICODE // Unicode #define WIN32_LEAN_AND_MEAN // do not include the world #define INC_OLE2 // include OLE/COM files #include #include #include #include #import "C:\Program Files\Microsoft SQL Server\80\Tools\Binn\sqldmo.dll" no_namespace INT _tmain(INT argc, TCHAR* argv[], TCHAR* envp[]) { HRESULT hr; TCHAR lpServer[] = _T("(local)\\dev"); TCHAR lpUser[] = _T("GERTD00\\SQLAgentProxyAccnt"); TCHAR lpDatabase[] = _T("msdb"); TCHAR lpLanguage[] = _T("us_english"); SQLDMO_LOGIN_TYPE eLoginType = SQLDMOLogin_NTUser; // SQLDMOLogin_NTGroup // SQLDMOLogin_NTUser // SQLDMOLogin_Standard if SUCCEEDED(hr = CoInitialize(NULL)) { try { _SQLServer2Ptr spSQLServer; if (SUCCEEDED(spSQLServer.CreateInstance(__uuidof(SQLServer2)))) { spSQLServer->LoginSecure = TRUE; spSQLServer->Connect(lpServer); _tprintf(_T("Connected to %s"), (LPTSTR) spSQLServer->Name); } LoginsPtr spLogins = spSQLServer->Logins; _Login2Ptr spLogin; try { spLogin = spLogins->Item(lpUser); spLogin->Remove(); _tprintf(_T("Login %s removed"), lpUser); } catch(_com_error pCE) { _tprintf(_T("Login %s did not exist"), lpUser); } if (SUCCEEDED(spLogin.CreateInstance(__uuidof(Login2)))) { spLogin->Type = eLoginType; spLogin->Name = lpUser; spLogin->Database = lpDatabase; spLogin->Language = lpLanguage; } if (SUCCEEDED(spLogins->Add(spLogin))) { _tprintf(_T("Login %s created"), (LPTSTR) spLogin->Name); } spSQLServer->DisConnect(); } catch(_com_error pCE) { _tprintf(_T("\n%s Error: %ld\r\n%s\r\n%s\r\n"), (TCHAR*)pCE.Source(), pCE.Error(), (TCHAR*)pCE.Description(), (TCHAR*)pCE.ErrorMessage()); } CoUninitialize(); } else { _tprintf(_T("Call to CoInitialize failed.\n")); } return(0); }