O R G A N I C / F E R T I L I Z E R: 09.10

Sep 30, 2010

atlanta systems management user group 10/11/2010

 

The Atlanta Southeast Management User Group and System Center Virtual User Group invites you to attend the next SMUG meeting scheduled for October 11th, 2010 for a day of great presentations, discussions, and networking.

Because this is a hybrid user group meeting there are two ways to register:

If you would like to attend IN PERSON at the Alpharetta Microsoft Campus please register here. https://www.clicktoattend.com/invitation.aspx?code=151055

If you would like to attend VIRTUALLY please register here. http://www.clicktoattend.com/?id=151148

 

DATE & TIME

October 11, 2010

10:00 AM – 4:00 PM Eastern Time Zone

Lunch provided by Veeam. http://www.veeam.com

“The nworks Management Pack provides continuous monitoring of the largest, most demanding virtual environments. It features a centrally managed, distributed architecture for horizontal "no limits" scalability and automatic failover and load balancing for high availability. Optimized, user-configurable data publication methods and use of consecutive sample monitors, optimized performance providers and other advanced features of System Center deliver maximum information with minimal overhead.”

 

THE AGENDA

Presenter

Agenda

Start

End

ATLSMUG

Opening and Introductions

9:50 AM

10:00 AM

Aaron Nelson

Uncovering Performance Gremlins in SQL Server

10:05 AM

11:00 AM

Scott Moss

Top 10 SCOM Hotfixes

11:05 AM

11:30 AM

Marcus Oh

Orchestrating Maintenance Mode with Opalis

11:30 AM

12:00 PM

Brian Pavnick

Connecting the Dots with nWorks MP for VMware

12:15 PM

1:00 PM

Denzil Ramsey

SCVMM Self Service Portal / vNext

1:05 PM

2:00 PM

Brian Huneycutt

Top 10 SCCM Hotfixes

2:05 PM

2:30 PM

Ted Sendler

OpsMgr R2 – Common Issues and Troubleshooting

2:35 PM

3:00 PM

Wally Mead

SCCM v.Next

3:00 PM

3:55 PM

 

 

PRESENTER BIOGRAPHIES

Aaron Nelson

Aaron Nelson is a Senior SQL Server Architect with over 10 years experience in architecture, business intelligence, development, and performance tuning of SQL Server.  He has experience managing enterprise-wide data needs in both transactional and data warehouse environments. Aaron holds certifications for MCITP: Business Intelligence Developer, Database Administrator, Database Developer; as well as MCTS: Windows Server Virtualization, Configuration (meaning Hyper-V).

 
Scott Moss

Scott has been working in the IT industry for more than 14 years. The majority of his time served in IT has been at various Telecommunications institutions, as well as a 3 year work release program in the Lottery industry. The past 5 years he has been focused on Systems Monitoring using MOM 2005 and Operations Manager 2007. Scott was also awarded the Microsoft's MVP Award 2010 for Operations Manager. For the past two years he has been vice president of the Atlanta Southeast Management User Group and President of the System Center Virtual User Group. He is also a SystemCenterCentral.com blogger and forums contributor.

 
Marcus Oh

Marcus is a Lead Systems Administrator for a large telecommunications provider, running directory services and management infrastructure for ~30,000 systems. He has been a MVP for the last six years in System Center specializing in Configuration Manager and Operations Manager. Marcus has written numerous articles for technology websites as well as his own blog. He co-authored Professional SMS 2003, MOM 2005, and WSUS.

 
Denzil Ramsey

Denny is a Datacenter Technology Specialist focused on Microsoft Datacenter Virtualization and Management solutions. Denny has been with Microsoft for 5 years in several roles including Networking Technology Specialist, Exchange Premier Field Engineer and Technical Account Manager working with customers like Home Depot and Coca-Cola. Before joining Microsoft, Denny spent 7 years a Cox Communications where he managed the Windows Core Infrastructure team supporting Exchange, Active Directory, Systems Management and Windows Server infrastructure.

 
Brian Pavnick

Brian Pavnick is a Solutions Architect at Veeam Software who specializes in integrating Microsoft System Center technologies with VMWare's VI. Prior to Veeam, he has worked over 10 years as a Sr. Systems Administrator acquiring skills in operating, implementing, and project managing Microsoft Server Infrastructure Technologies. Throughout his career, he has specialized in Systems Management for Microsoft Server technologies. This includes OS deployment, patch management, system profiling, system and application monitoring, data security, and disaster recovery. Brian is a Microsoft Certified IT Professional in Enterprise Administration.

 
Brian Huneycutt

Brian is currently a developer (more a jack-of-all-trades really) on the Configuration Manager Sustained Engineering team. He started as a Support Engineer handling consumer desktop support issues at Microsoft in 1999. After having his fill of "No, there is no double right click, just a double left click" and "I'm sorry sir, I cannot help you with your ISP's login password issue" he escaped transitioned to the SMS team, where he quickly learned the value of the SMS logs. Once firmly entrenched in the SMS world, he worked through all levels of support, ending up as an Escalation Engineer ("What do you want to debug today?") prior to moving to the product team. These days he still partners with CSS (current acronym for Support) on problem investigations, along with development work on hotfixes, service packs, and generally anything that needs either fixing or a very long email. Those fleeting moments of free time are split between family, tooling around town in a little Triumph Spitfire, or making sawdust in the garage / workshop.

 
Ted Sendler

Ted is a Support Escalation Engineer on the System Center Support Team at Microsoft. He is primarily focused on issues dealing with MOM 2005, Operations Manager 2007, Service Manager 2010, System Center Essentials 2007 and 2010 , and Opalis.

 
Wally Mead

Wally has been with Microsoft for 17+ years. He started in the training group and helped develop the training course for the original release of SMS 1.0. He has then been involved with all versions of SMS, and now Configuration Manager, from developing and delivering training, or assisting customers on newsgroups and forums, or directly with them through the TAP program. He now is a Senior Program Manager in the Configuration Manager Product Group, responsible for community efforts, such as forums, managing the MVPs, presenting at conferences, and working with TAP customers.

Sep 29, 2010

ssrs: the variable name has already been declared -- when working with temp tables

here is today's hair pulling exercise.  I created a very simple sql query (the one I was using too complex to see the problem clearly).  note below:

   1: declare @Marcus table
   2:     (
   3:         resourceid nvarchar(10),
   4:         name nvarchar(255)
   5:     )
   6:  
   7: insert into @marcus
   8: select resourceid,name0 from v_r_system
   9:  
  10: select * from @marcus

 

when executed in sql server management studio, the query runs as expected.  it just grabs resourceid and system name, puts them into a temporary table, and draws them right back out.  however, when executed in bids (business intelligence development studio), you receive the error stating "the variable name has already been declared. variable names must be unique within a query batch or stored procedure."

image

 

right thanks. so after much chasing geese wildly, I discovered that while windows is decidedly case insensitive, sometimes it changes its mind.  in visual studio (bids, etc) it appears that the case used for variables with respect to temporary tables is sensitive!

so, back to the simple query, here's the revised change.  just keep your case the same.

   1: declare @Marcus table
   2:     (
   3:         resourceid nvarchar(10),
   4:         name nvarchar(255)
   5:     )
   6:  
   7: insert into @Marcus
   8: select resourceid,name0 from v_r_system
   9:  
  10: select * from @Marcus

Sep 27, 2010

ds: paged results with jndi ldap (java)

I see this often enough that I thought I'd give myself a reference for when I see a lead on it.

first example is on the forums.sun.com site. http://forums.sun.com/thread.jspa?threadID=578347&tstart=0

second example on the java2s.com site. http://www.java2s.com/Code/Java/JNDI-LDAP/howapagedsearchcanbeperformedusingthePagedResultsControlAPI.htm

since I know nothing about java, I can't validate that this works... but it's good reference.

 

   1: /**
   2:  * paged.java
   3:  * 5 July 2001
   4:  * Sample JNDI application that performs a paged search.
   5:  * 
   6:  */
   7:  
   8: import java.util.Hashtable;
   9: import java.util.Enumeration;
  10:  
  11: import javax.naming.*;
  12: import javax.naming.directory.*;
  13: import javax.naming.ldap.*;
  14: import com.sun.jndi.ldap.ctl.*;
  15:  
  16: class paged {
  17:  
  18: public static void main(String[] args) {
  19:  
  20:  
  21:         Hashtable env = new Hashtable();
  22:         String adminName = "CN=Administrator,CN=Users,DC=antipodes,DC=com";
  23:         String adminPassword = "XXXXXXXX";
  24:         String searchBase = "DC=antipodes,DC=com";
  25:         String searchFilter = "(&(objectClass=user)(mail=*))";
  26:         
  27:         env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
  28:  
  29:         //set security credentials, note using simple cleartext authentication
  30:         env.put(Context.SECURITY_AUTHENTICATION,"simple");
  31:         env.put(Context.SECURITY_PRINCIPAL,adminName);
  32:         env.put(Context.SECURITY_CREDENTIALS,adminPassword);
  33:                 
  34:         //connect to my domain controller
  35:         env.put(Context.PROVIDER_URL, "ldap://mydc.antipodes.com:389");
  36:         try {
  37:  
  38:             // Create the initial directory context
  39:             LdapContext ctx = new InitialLdapContext(env,null);
  40:         
  41:             // Create the search controls         
  42:             SearchControls searchCtls = new SearchControls();
  43:         
  44:             //Specify the attributes to return
  45:             String returnedAtts[]={"sn","givenName","mail"};
  46:             searchCtls.setReturningAttributes(returnedAtts);
  47:         
  48:             //Specify the search scope
  49:             searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
  50:  
  51:             //Set the page size and initialize the cookie that we pass back in subsequent pages
  52:             int pageSize = 10;
  53:             byte[] cookie = null;
  54:  
  55:             //Request the paged results control
  56:             Control[] ctls = new Control[]{new PagedResultsControl(pageSize)};
  57:             ctx.setRequestControls(ctls);
  58:  
  59:             //initialize counter to total the results
  60:             int totalResults = 0;
  61:  
  62:             // Search for objects using the filter
  63:  
  64:             do {
  65:                 NamingEnumeration results = ctx.search(searchBase, searchFilter, searchCtls);
  66:  
  67:                     // loop through the results in each page
  68:  
  69:                     while (results != null && results.hasMoreElements()) {
  70:                 SearchResult sr = (SearchResult)results.next();
  71:  
  72:                 //print out the name 
  73:                 System.out.println("name: " + sr.getName());
  74:  
  75:                 //increment the counter
  76:                 totalResults++;    
  77:  
  78:                     }
  79:     
  80:     
  81:             // examine the response controls
  82:             cookie = parseControls(ctx.getResponseControls());
  83:  
  84:                     // pass the cookie back to the server for the next page
  85:             ctx.setRequestControls(new Control[]{new PagedResultsControl(pageSize, cookie, Control.CRITICAL) });
  86:  
  87:             } while ((cookie != null) && (cookie.length != 0));
  88:  
  89:     
  90:             ctx.close();
  91:  
  92:             System.out.println("Total entries: " + totalResults);
  93:  
  94:  
  95:             } 
  96:         catch (NamingException e) {
  97:                System.err.println("Paged Search failed." + e);
  98:             }    
  99:         catch (java.io.IOException e) {
 100:             System.err.println("Paged Search failed." + e);
 101:               } 
 102:     }
 103:  
 104:     static byte[] parseControls(Control[] controls) throws NamingException {
 105:  
 106:         byte[] cookie = null;
 107:  
 108:         if (controls != null) {
 109:  
 110:                 for (int i = 0; i < controls.length; i++) {
 111:                 if (controls[i] instanceof PagedResultsResponseControl) {
 112:                     PagedResultsResponseControl prrc = (PagedResultsResponseControl)controls[i];
 113:                     cookie = prrc.getCookie();
 114:                     System.out.println(">>Next Page \n");
 115:                 }
 116:                 }
 117:         }
 118:  
 119:         return (cookie == null) ? new byte[0] : cookie;
 120:         }
 121: }

 

   1: /*
   2:  * Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved.
   3:  *
   4:  * Redistribution and use in source and binary forms, with or without
   5:  * modification, are permitted provided that the following conditions
   6:  * are met:
   7:  *
   8:  *   - Redistributions of source code must retain the above copyright
   9:  *     notice, this list of conditions and the following disclaimer.
  10:  *
  11:  *   - Redistributions in binary form must reproduce the above copyright
  12:  *     notice, this list of conditions and the following disclaimer in the
  13:  *     documentation and/or other materials provided with the distribution.
  14:  *
  15:  *   - Neither the name of Sun Microsystems nor the names of its
  16:  *     contributors may be used to endorse or promote products derived
  17:  *     from this software without specific prior written permission.
  18:  *
  19:  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
  20:  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
  21:  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  22:  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  23:  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  24:  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  25:  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  26:  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  27:  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  28:  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  29:  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  30:  */
  31:  
  32: import java.io.IOException;
  33: import java.util.Hashtable;
  34:  
  35: import javax.naming.Context;
  36: import javax.naming.NamingEnumeration;
  37: import javax.naming.NamingException;
  38: import javax.naming.directory.SearchControls;
  39: import javax.naming.directory.SearchResult;
  40: import javax.naming.ldap.Control;
  41: import javax.naming.ldap.InitialLdapContext;
  42: import javax.naming.ldap.LdapContext;
  43: import javax.naming.ldap.PagedResultsControl;
  44: import javax.naming.ldap.PagedResultsResponseControl;
  45:  
  46: /**
  47:  * Shows how a paged search can be performed using the PagedResultsControl API
  48:  */
  49:  
  50: class PagedSearch {
  51:  
  52:   public static void main(String[] args) {
  53:  
  54:     Hashtable<String, Object> env = new Hashtable<String, Object>(11);
  55:     env
  56:         .put(Context.INITIAL_CONTEXT_FACTORY,
  57:             "com.sun.jndi.ldap.LdapCtxFactory");
  58:  
  59:     /* Specify host and port to use for directory service */
  60:     env.put(Context.PROVIDER_URL,
  61:         "ldap://localhost:389/ou=People,o=JNDITutorial");
  62:  
  63:     try {
  64:       LdapContext ctx = new InitialLdapContext(env, null);
  65:  
  66:       // Activate paged results
  67:       int pageSize = 5;
  68:       byte[] cookie = null;
  69:       ctx.setRequestControls(new Control[] { new PagedResultsControl(pageSize,
  70:           Control.NONCRITICAL) });
  71:       int total;
  72:  
  73:       do {
  74:         /* perform the search */
  75:         NamingEnumeration results = ctx.search("", "(objectclass=*)",
  76:             new SearchControls());
  77:  
  78:         /* for each entry print out name + all attrs and values */
  79:         while (results != null && results.hasMore()) {
  80:           SearchResult entry = (SearchResult) results.next();
  81:           System.out.println(entry.getName());
  82:         }
  83:  
  84:         // Examine the paged results control response
  85:         Control[] controls = ctx.getResponseControls();
  86:         if (controls != null) {
  87:           for (int i = 0; i < controls.length; i++) {
  88:             if (controls[i] instanceof PagedResultsResponseControl) {
  89:               PagedResultsResponseControl prrc = (PagedResultsResponseControl) controls[i];
  90:               total = prrc.getResultSize();
  91:               if (total != 0) {
  92:                 System.out.println("***************** END-OF-PAGE "
  93:                     + "(total : " + total + ") *****************\n");
  94:               } else {
  95:                 System.out.println("***************** END-OF-PAGE "
  96:                     + "(total: unknown) ***************\n");
  97:               }
  98:               cookie = prrc.getCookie();
  99:             }
 100:           }
 101:         } else {
 102:           System.out.println("No controls were sent from the server");
 103:         }
 104:         // Re-activate paged results
 105:         ctx.setRequestControls(new Control[] { new PagedResultsControl(
 106:             pageSize, cookie, Control.CRITICAL) });
 107:  
 108:       } while (cookie != null);
 109:  
 110:       ctx.close();
 111:  
 112:     } catch (NamingException e) {
 113:       System.err.println("PagedSearch failed.");
 114:       e.printStackTrace();
 115:     } catch (IOException ie) {
 116:       System.err.println("PagedSearch failed.");
 117:       ie.printStackTrace();
 118:     }
 119:   }
 120: }