C:\MSAS12.PROD\OLAP\bin>msmdsrv.exe -s C:\MSAS12.PROD\OLAP\Config -c      
-s C:\MSAS12.PROD\OLAP\Config -c      
Message: The flight recorder was started. (Source: MSOLAP$PROD, Type: 1, Category: 289, Event ID: 0x41210005)      
Message: Service started. Microsoft SQL Server Analysis Services 64 Bit Enterprise (x64) SP1 12.0.4100.1. (Source: MSOLAP$PROD, Type: 1, Category: 289      
, Event ID: 0x41210000)      
Message: Software usage metrics started successfully. (Source: MSOLAP$PROD, Type: 1, Category: 289, Event ID: 0x41210030)
Wednesday, August 26, 2015
Start SQL Server Analysis Service in Console mode
How to change the SSAS Port number
SSAS default instance or clustered instance (regardless named instance or not) default to 2383.
For SSAS named instance in standalone environment, default port is high port, and SQL Server Browser Service Listening on TCP 2382.
To change the port:
Edit file “<Instance Name>\OLAP\Config\msmdsrv.ini”, change the port number from “0” to desired value. (3034 in our case).
Don't forget to configure your firewall to allow incoming requests on TCP port 3034.
netsh advfirewall firewall add rule name="SQL Server Analysis Services (tcp-in) on 3034" dir=in action=allow protocol=TCP localport=3034 profile=domain    
Restart the SSRS Service
C:\Users\administrator.DBAGLOBE>tasklist | findstr msmdsrv.exe      
msmdsrv.exe                   1084 Services                   0     34,828 K
C:\Users\administrator.DBAGLOBE>netstat -nao | findstr 1084      
  TCP    0.0.0.0:3034           0.0.0.0:0              LISTENING       1084      
  TCP    [::]:3034              [::]:0                 LISTENING       1084
Connect to the SSAS using format “machinename:port” format, instead of “instancename:port” format.
Incorrect format:
Find out which port SQL Server services listening on
C:\>tasklist |findstr 2060      
sqlbrowser.exe                2060 Services                   0     10,000 K
C:\>netstat -nao | findstr 2060      
  TCP    0.0.0.0:2382           0.0.0.0:0              LISTENING       2060      
  TCP    [::]:2382              [::]:0                 LISTENING       2060      
  UDP    0.0.0.0:1434           *:*                                    2060      
  UDP    [::]:1434              *:*                                    2060
C:\>tasklist | findstr 2456      
sqlservr.exe                  2456 Services                   0    174,624 K
C:\>netstat -nao | findstr 2456      
  TCP    0.0.0.0:3033           0.0.0.0:0              LISTENING       2456      
  TCP    127.0.0.1:64254        0.0.0.0:0              LISTENING       2456      
  TCP    [::]:3033              [::]:0                 LISTENING       2456      
  TCP    [::1]:64254            [::]:0                 LISTENING       2456
C:\>tasklist | findstr 2508      
SQLAGENT.EXE                  2508 Services                   0     20,732 K
C:\>netstat -nao | findstr 2508
C:\>tasklist | findstr 2156      
fdlauncher.exe                2156 Services                   0      3,476 K
C:\>netstat -nao | findstr 2156
C:\>tasklist | findstr 1500      
msmdsrv.exe                   1500 Services                   0     35,864 K
C:\>netstat -nao | findstr 1500      
  TCP    0.0.0.0:64310          0.0.0.0:0              LISTENING       1500      
  TCP    [::]:64310             [::]:0                 LISTENING       1500      
Tuesday, August 18, 2015
Install MySQL Python Connector
[mysql@localhost repo]$ tar zxvf mysql-connector-python-commercial-2.0.4-py2.7.tar.gz     
[mysql@localhost repo]$ sudo su -    
[root@localhost repo]# cd /mysql/repo/mysql-connector-python-commercial-2.0.4-py2.7     
[root@localhost mysql-connector-python-commercial-2.0.4-py2.7]#    
[root@localhost mysql-connector-python-commercial-2.0.4-py2.7]# python setup.py install    
running install    
running build    
copying mysql/connector/pooling.pyc -> build/lib/mysql/connector    
copying mysql/connector/custom_types.pyc -> build/lib/mysql/connector    
copying mysql/connector/fabric/connection.pyc -> build/lib/mysql/connector/fabric    
copying mysql/connector/fabric/caching.pyc -> build/lib/mysql/connector/fabric    
copying mysql/connector/fabric/balancing.pyc -> build/lib/mysql/connector/fabric    
copying mysql/connector/fabric/__init__.pyc -> build/lib/mysql/connector/fabric    
copying mysql/connector/catch23.pyc -> build/lib/mysql/connector    
copying mysql/connector/connection.pyc -> build/lib/mysql/connector    
copying mysql/connector/errorcode.pyc -> build/lib/mysql/connector    
copying mysql/connector/cursor.pyc -> build/lib/mysql/connector    
copying mysql/connector/conversion.pyc -> build/lib/mysql/connector    
copying mysql/connector/authentication.pyc -> build/lib/mysql/connector    
copying mysql/connector/locales/eng/client_error.pyc -> build/lib/mysql/connector/locales/eng    
copying mysql/connector/locales/eng/__init__.pyc -> build/lib/mysql/connector/locales/eng    
copying mysql/connector/locales/__init__.pyc -> build/lib/mysql/connector/locales    
copying mysql/connector/errors.pyc -> build/lib/mysql/connector    
copying mysql/connector/__init__.pyc -> build/lib/mysql/connector    
copying mysql/connector/protocol.pyc -> build/lib/mysql/connector    
copying mysql/connector/charsets.pyc -> build/lib/mysql/connector    
copying mysql/connector/dbapi.pyc -> build/lib/mysql/connector    
copying mysql/connector/utils.pyc -> build/lib/mysql/connector    
copying mysql/connector/django/schema.pyc -> build/lib/mysql/connector/django    
copying mysql/connector/django/introspection.pyc -> build/lib/mysql/connector/django    
copying mysql/connector/django/client.pyc -> build/lib/mysql/connector/django    
copying mysql/connector/django/base.pyc -> build/lib/mysql/connector/django    
copying mysql/connector/django/compiler.pyc -> build/lib/mysql/connector/django    
copying mysql/connector/django/validation.pyc -> build/lib/mysql/connector/django    
copying mysql/connector/django/__init__.pyc -> build/lib/mysql/connector/django    
copying mysql/connector/django/creation.pyc -> build/lib/mysql/connector/django    
copying mysql/connector/constants.pyc -> build/lib/mysql/connector    
copying mysql/connector/network.pyc -> build/lib/mysql/connector    
copying mysql/connector/optionfiles.pyc -> build/lib/mysql/connector    
copying mysql/connector/version.pyc -> build/lib/mysql/connector    
copying mysql/__init__.pyc -> build/lib/mysql    
running install_lib    
running build_py    
package init file 'mysql/__init__.py' not found (or not a regular file)    
package init file 'mysql/connector/__init__.py' not found (or not a regular file)    
package init file 'mysql/connector/locales/__init__.py' not found (or not a regular file)    
package init file 'mysql/connector/locales/eng/__init__.py' not found (or not a regular file)    
package init file 'mysql/__init__.py' not found (or not a regular file)    
package init file 'mysql/connector/__init__.py' not found (or not a regular file)    
package init file 'mysql/connector/locales/__init__.py' not found (or not a regular file)    
package init file 'mysql/connector/locales/eng/__init__.py' not found (or not a regular file)    
running install_egg_info    
Removing /usr/lib/python2.7/site-packages/mysql_connector_python-2.0.4-py2.7.egg-info    
Writing /usr/lib/python2.7/site-packages/mysql_connector_python-2.0.4-py2.7.egg-info
Sample Python Code for verifying the installation:
|           import mysql.connector config = {            cnx = mysql.connector.connect(**config)            query = ("select * from t1") cursor.execute(query) for (id,last_updated) in cursor:            cursor.close()             |      
[mysql@localhost repo]$ python test.py    
1: 2015-08-14 23:01:49    
2: 2015-08-14 23:25:42    
3: 2015-08-14 23:27:17    
4: 2015-08-14 23:29:01    
5: 2015-08-14 23:30:00
Setup parameters:
[root@localhost mysql-connector-python-commercial-2.0.4-py2.7]# python setup.py --help   
Common commands: (see '--help-commands' for more)
  setup.py build      will build the package underneath 'build/'   
  setup.py install    will install the package
Global options:   
  --verbose (-v)      run verbosely (default)    
  --quiet (-q)        run quietly (turns verbosity off)    
  --dry-run (-n)      don't actually do anything    
  --help (-h)         show detailed help message    
  --no-user-cfg       ignore pydistutils.cfg in your home directory    
  --command-packages  list of packages that provide distutils commands
Information display options (just display information, ignore any commands)   
  --help-commands     list all available commands    
  --name              print package name    
  --version (-V)      print package version    
  --fullname          print <package name>-<version>    
  --author            print the author's name    
  --author-email      print the author's email address    
  --maintainer        print the maintainer's name    
  --maintainer-email  print the maintainer's email address    
  --contact           print the maintainer's name if known, else the author's    
  --contact-email     print the maintainer's email address if known, else the    
                      author's    
  --url               print the URL for this package    
  --license           print the license of the package    
  --licence           alias for --license    
  --description       print the package description    
  --long-description  print the long package description    
  --platforms         print the list of platforms    
  --classifiers       print the list of classifiers    
  --keywords          print the list of keywords    
  --provides          print the list of packages/modules provided    
  --requires          print the list of packages/modules required    
  --obsoletes         print the list of packages/modules made obsolete
usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]   
   or: setup.py --help [cmd1 cmd2 ...]    
   or: setup.py --help-commands    
   or: setup.py cmd --help    
Sunday, August 16, 2015
Skip MySQL transactions on Slave when GTID configured
Symptoms:
server2> show slave status \G      
*************************** 1. row ***************************      
               Slave_IO_State: Waiting for master to send event      
                  Master_Host: localhost      
                  Master_User: repl_user      
                  Master_Port: 5001      
                Connect_Retry: 60      
              Master_Log_File: bin-log.000012      
          Read_Master_Log_Pos: 2255      
               Relay_Log_File: relay-bin.000016      
                Relay_Log_Pos: 1902      
        Relay_Master_Log_File: bin-log.000012      
             Slave_IO_Running: Yes      
            Slave_SQL_Running: No      
              Replicate_Do_DB:      
          Replicate_Ignore_DB:      
           Replicate_Do_Table:      
       Replicate_Ignore_Table:      
      Replicate_Wild_Do_Table:      
  Replicate_Wild_Ignore_Table:      
                   Last_Errno: 1032      
                   Last_Error: Worker 0 failed executing transaction 'e645f6c4-428d-11e5-bf83-08002702dadb:20' at master log bin-log.000012, end_log_pos 1939; Could not execute Delete_rows event on table appdb.a; Can't find record in 'a', Error_code: 1032; handler error HA_ERR_END_OF_FILE; the event's master log bin-log.000012, end_log_pos 1939      
                 Skip_Counter: 0      
          Exec_Master_Log_Pos: 1696      
              Relay_Log_Space: 2860      
              Until_Condition: None      
               Until_Log_File:      
                Until_Log_Pos: 0      
           Master_SSL_Allowed: No      
           Master_SSL_CA_File:      
           Master_SSL_CA_Path:      
              Master_SSL_Cert:      
            Master_SSL_Cipher:      
               Master_SSL_Key:      
        Seconds_Behind_Master: NULL      
Master_SSL_Verify_Server_Cert: No      
                Last_IO_Errno: 0      
                Last_IO_Error:      
               Last_SQL_Errno: 1032      
               Last_SQL_Error: Worker 0 failed executing transaction 'e645f6c4-428d-11e5-bf83-08002702dadb:20' at master log bin-log.000012, end_log_pos 1939; Could not execute Delete_rows event on table appdb.a; Can't find record in 'a', Error_code: 1032; handler error HA_ERR_END_OF_FILE; the event's master log bin-log.000012, end_log_pos 1939      
  Replicate_Ignore_Server_Ids:      
             Master_Server_Id: 1      
                  Master_UUID: e645f6c4-428d-11e5-bf83-08002702dadb      
             Master_Info_File: mysql.slave_master_info      
                    SQL_Delay: 0      
          SQL_Remaining_Delay: NULL      
      Slave_SQL_Running_State:      
           Master_Retry_Count: 86400      
                  Master_Bind:      
      Last_IO_Error_Timestamp:      
     Last_SQL_Error_Timestamp: 150816 22:53:41      
               Master_SSL_Crl:      
           Master_SSL_Crlpath:      
           Retrieved_Gtid_Set: e645f6c4-428d-11e5-bf83-08002702dadb:5-21      
            Executed_Gtid_Set: b8ac4b6b-428f-11e5-bf8f-08002702dadb:1-5,      
e645f6c4-428d-11e5-bf83-08002702dadb:5-19      
                Auto_Position: 0      
1 row in set (0.00 sec)
Check the failed statements:
[mysql@localhost script]$ mysqlbinlog /mysql/server1/repl/bin-log.000012 --start-position=1939 --stop-position=1939      
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;      
/*!40019 SET @@session.max_insert_delayed_threads=0*/;      
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;      
DELIMITER /*!*/;      
# at 4      
#150816 22:41:17 server id 1  end_log_pos 120 CRC32 0xa5f1c472  Start: binlog v 4, server v 5.6.26-enterprise-commercial-advanced-log created 150816 22:41:17 at startup      
# Warning: this binlog is either in use or was not closed properly.      
ROLLBACK/*!*/;      
BINLOG '      
DaHQVQ8BAAAAdAAAAHgAAAABAAQANS42LjI2LWVudGVycHJpc2UtY29tbWVyY2lhbC1hZHZhbmNl      
ZC1sb2cAAAAAAAAAAAANodBVEzgNAAgAEgAEBAQEEgAAXAAEGggAAAAICAgCAAAACgoKGRkAAXLE      
8aU=      
'/*!*/;      
DELIMITER ;      
# End of log file      
ROLLBACK /* added by mysqlbinlog */;      
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;      
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
   
[mysql@localhost script]$ mysqlbinlog /mysql/server1/repl/bin-log.000012 -v      
SET @@SESSION.GTID_NEXT= 'e645f6c4-428d-11e5-bf83-08002702dadb:20'/*!*/;      
# at 1744      
#150816 22:53:41 server id 1  end_log_pos 1817 CRC32 0x96f22726         Query   thread_id=7     exec_time=0     error_code=0      
SET TIMESTAMP=1439736821/*!*/;      
BEGIN      
/*!*/;      
# at 1817      
# at 1854      
#150816 22:53:41 server id 1  end_log_pos 1899 CRC32 0x384ad943         Table_map: `appdb`.`a` mapped to number 71      
# at 1899      
#150816 22:53:41 server id 1  end_log_pos 1939 CRC32 0xb9074e0e         Delete_rows: table id 71 flags: STMT_END_F
BINLOG '     
9aPQVRMBAAAALQAAAGsHAAAAAEcAAAAAAAEABWFwcGRiAAFhAAEDAAFD2Uo4      
9aPQVSABAAAAKAAAAJMHAAAAAEcAAAAAAAEAAgAB//4AAAAADk4HuQ==      
'/*!*/;      
### DELETE FROM `appdb`.`a`       
### WHERE        
###   @1=0        
# at 1939      
#150816 22:53:41 server id 1  end_log_pos 1970 CRC32 0xf10570bc         Xid = 62      
COMMIT/*!*/;      
# at 1970      
#150816 22:55:06 server id 1  end_log_pos 2018 CRC32 0x839b9136         GTID [commit=yes]
Fix the replication:
server2> stop slave;      
Query OK, 0 rows affected (0.00 sec)
server2> set gtid_next='e645f6c4-428d-11e5-bf83-08002702dadb:20';      
Query OK, 0 rows affected (0.00 sec)
server2> begin;commit;      
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.04 sec)
server2> set gtid_next="automatic";      
Query OK, 0 rows affected (0.00 sec)
server2> start slave;      
Query OK, 0 rows affected, 1 warning (0.01 sec)
server2> show slave status \G      
*************************** 1. row ***************************      
               Slave_IO_State: Waiting for master to send event      
                  Master_Host: localhost      
                  Master_User: repl_user      
                  Master_Port: 5001      
                Connect_Retry: 60      
              Master_Log_File: bin-log.000012      
          Read_Master_Log_Pos: 2255      
               Relay_Log_File: relay-bin.000017      
                Relay_Log_Pos: 352      
        Relay_Master_Log_File: bin-log.000012      
             Slave_IO_Running: Yes      
            Slave_SQL_Running: Yes      
              Replicate_Do_DB:      
          Replicate_Ignore_DB:      
           Replicate_Do_Table:      
       Replicate_Ignore_Table:      
      Replicate_Wild_Do_Table:      
  Replicate_Wild_Ignore_Table:      
                   Last_Errno: 0      
                   Last_Error:      
                 Skip_Counter: 0      
          Exec_Master_Log_Pos: 2255      
              Relay_Log_Space: 2860      
              Until_Condition: None      
               Until_Log_File:      
                Until_Log_Pos: 0      
           Master_SSL_Allowed: No      
           Master_SSL_CA_File:      
           Master_SSL_CA_Path:      
              Master_SSL_Cert:      
            Master_SSL_Cipher:      
               Master_SSL_Key:      
        Seconds_Behind_Master: 0      
Master_SSL_Verify_Server_Cert: No      
                Last_IO_Errno: 0      
                Last_IO_Error:      
               Last_SQL_Errno: 0      
               Last_SQL_Error:      
  Replicate_Ignore_Server_Ids:      
             Master_Server_Id: 1      
                  Master_UUID: e645f6c4-428d-11e5-bf83-08002702dadb      
             Master_Info_File: mysql.slave_master_info      
                    SQL_Delay: 0      
          SQL_Remaining_Delay: NULL      
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it      
           Master_Retry_Count: 86400      
                  Master_Bind:      
      Last_IO_Error_Timestamp:      
     Last_SQL_Error_Timestamp:      
               Master_SSL_Crl:      
           Master_SSL_Crlpath:      
           Retrieved_Gtid_Set: e645f6c4-428d-11e5-bf83-08002702dadb:5-21      
            Executed_Gtid_Set: b8ac4b6b-428f-11e5-bf8f-08002702dadb:1-5,      
e645f6c4-428d-11e5-bf83-08002702dadb:5-21      
                Auto_Position: 0      
1 row in set (0.00 sec)
Alternative method:
server2> stop slave;    
Query OK, 0 rows affected (0.01 sec)
server2> CHANGE MASTER TO MASTER_HOST='localhost', MASTER_PORT=5001, MASTER_USER='repluser', MASTER_PASSWORD='compexpassword’, MASTER_LOG_FILE='bin-log.000012', MASTER_LOG_POS=2555;    
Query OK, 0 rows affected, 2 warnings (0.02 sec)
server2> start slave;    
Query OK, 0 rows affected, 1 warning (0.00 sec)    
Friday, August 14, 2015
Emulating wide area network delays
http://www.linuxfoundation.org/collaborate/workgroups/networking/netem
This is the simplest example, it just adds a fixed amount of delay to all packets going out of the local Ethernet.
# tc qdisc add dev eth0 root netem delay 100ms
Real Examples:
[root@localhost ~]# ifconfig -a   
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500    
        inet 192.168.56.101  netmask 255.255.255.0  broadcast 192.168.56.255    
        inet6 fe80::a00:27ff:fe02:dadb  prefixlen 64  scopeid 0x20<link>    
        ether 08:00:27:02:da:db  txqueuelen 1000  (Ethernet)    
        RX packets 836  bytes 75866 (74.0 KiB)    
        RX errors 0  dropped 0  overruns 0  frame 0    
        TX packets 652  bytes 74833 (73.0 KiB)    
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0    
[root@localhost ~]# tc qdisc add dev enp0s3 root netem delay 100ms    
[root@localhost ~]# tc qdisc show dev enp0s3    
qdisc netem 8002: root refcnt 2 limit 1000 delay 100.0ms    
[root@localhost ~]# tc qdisc delete dev enp0s3 root netem delay 100ms    
[root@localhost ~]# tc qdisc show dev enp0s3    
qdisc pfifo_fast 0: root refcnt 2 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
The below screenshot of ping clearly demonstrates the latency added (100ms).
Thursday, August 6, 2015
Enable Read-Only Routing using T-SQL in SQL Server 2014 AlwaysOn Availability Groups
Symptom:
C:\Users\administrator.DBAGLOBE>sqlcmd -S vmmag02,2433 -d reportserver -K readonly -Q "select @@servername"
Sqlcmd: Error: Microsoft ODBC Driver 11 for SQL Server : The target database ('reportserver') is in an availability group and currently does not allow read only connections. For more information about application intent, see SQL Server Books Online.
Enable Read-Only Routing using T-SQL in SQL Server 2014 AlwaysOn Availability Groups
select ar.replica_server_name,   
    ar.availability_mode_desc,    
    ar.failover_mode_desc,    
    ar.primary_role_allow_connections_desc,    
    ar.secondary_role_allow_connections_desc,    
    ar.read_only_routing_url    
from sys.availability_groups ag, sys.availability_replicas ar    
where ag.group_id=ar.group_id    
and ag.name='SSRS_AG'
|           ALTER AVAILABILITY GROUP SSRS_AG             ALTER AVAILABILITY GROUP SSRS_AG             ALTER AVAILABILITY GROUP SSRS_AG             ALTER AVAILABILITY GROUP SSRS_AG              |      
Reference URL:
Wednesday, August 5, 2015
SQL Server AG listener creation with customized OU
Symptom:
USE [master]   
GO    
ALTER AVAILABILITY GROUP [TestDB1_AG]    
ADD LISTENER N'VMMAG01' (    
WITH IP    
((N'10.0.2.201', N'255.255.255.0')    
)    
, PORT=1433);
Msg 19471, Level 16, State 0, Line 3   
The WSFC cluster could not bring the Network Name resource with DNS name 'VMMAG01' online. The DNS name may have been taken or have a conflict with existing name services, or the WSFC cluster service may not be running or may be inaccessible. Use a different DNS name to resolve name conflicts, or check the WSFC cluster log for more information.
Msg 19476, Level 16, State 4, Line 3   
The attempt to create the network name and IP address for the listener failed. The WSFC service may not be running or may be inaccessible in its current state, or the values provided for the network name and IP address may be incorrect. Check the state of the WSFC cluster and validate the network name and IP address with the network administrator.    
How to fix:
If servers in default OU, for example, it works per normal.
Otherwise, if in non-default OU, for example below, need to pre-stage the virtual computer objects (VCOs) and grant full right of Cluster Computer Object (CNO) on VCOs.
Fix SPN registration issue for Windows return code: 0x21c7, state: 15.
Symptoms:
The SQL Server Network Interface library could not register the Service Principal Name (SPN) [ MSSQLSvc/VMMSQL01.dbaglobe.com:1433 ] for the SQL Server service. Windows return code: 0x21c7, state: 15.
Table: UPN and SPN uniqueness error codes
The attribute value provided is not unique in the forest or partition. Attribute: servicePrincipalName Value=MSSQLSvc/VMMSQL01.dbaglobe.comCN=VMMSQL01,OU=SQLServers,DC=dbaglobe,DC=com
Value=MSSQLSvc/VMMSQL01.dbaglobe.com
CN=VMMSQL01,OU=SQLServers,DC=dbaglobe,DC=com Winerror: 8647
See http://go.microsoft.com/fwlink/?LinkID=279782 for more details on this policy.
How to Troubleshoot:
C:\Users\Administrator>dsquery * -filter servicePrincipalName=*    
"CN=VMMAD01,OU=Domain Controllers,DC=dbaglobe,DC=com"    
"CN=VMMSQL01,CN=Computers,DC=dbaglobe,DC=com"    
"CN=VMMSQL02,CN=Computers,DC=dbaglobe,DC=com"    
"CN=krbtgt,CN=Users,DC=dbaglobe,DC=com"    
"CN=sqlsvcs,CN=Users,DC=dbaglobe,DC=com"
C:\Users\Administrator>setspn -l VMMSQL01    
Registered ServicePrincipalNames for CN=VMMSQL01,CN=Computers,DC=dbaglobe,DC=com:    
        MSSQLSvc/VMMSQL01.dbaglobe.com:1433     
        MSSQLSvc/VMMSQL01.dbaglobe.com    
        WSMAN/VMMSQL01    
        WSMAN/VMMSQL01.dbaglobe.com    
        RestrictedKrbHost/VMMSQL01    
        HOST/VMMSQL01    
        RestrictedKrbHost/VMMSQL01.dbaglobe.com    
        HOST/VMMSQL01.dbaglobe.com
   
C:\Users\Administrator>setspn -D MSSQLSvc/VMMSQL01.dbaglobe.com:1433 VMMSQL01    
Unregistering ServicePrincipalNames for CN=VMMSQL01,CN=Computers,DC=dbaglobe,DC=com    
        MSSQLSvc/VMMSQL01.dbaglobe.com:1433    
Updated object
C:\Users\Administrator>setspn -D MSSQLSvc/VMMSQL01.dbaglobe.com VMMSQL01    
Unregistering ServicePrincipalNames for CN=VMMSQL01,CN=Computers,DC=dbaglobe,DC=com    
        MSSQLSvc/VMMSQL01.dbaglobe.com    
Updated object
C:\Users\Administrator>setspn -l VMMSQL01    
Registered ServicePrincipalNames for CN=VMMSQL01,CN=Computers,DC=dbaglobe,DC=com:    
        WSMAN/VMMSQL01    
        WSMAN/VMMSQL01.dbaglobe.com    
        RestrictedKrbHost/VMMSQL01    
        HOST/VMMSQL01    
        RestrictedKrbHost/VMMSQL01.dbaglobe.com    
        HOST/VMMSQL01.dbaglobe.com
Reference:
Fix Service Principal Name (SPN) for SQL Server in Windows 2012 AD Environment
Symptoms:
SQL Server is attempting to register a Service Principal Name (SPN) for the SQL Server service. Kerberos authentication will not be possible until a SPN is registered for the SQL Server service. This is an informational message. No user action is required.The SQL Server Network Interface library could not register the Service Principal Name (SPN) [ MSSQLSvc/VMMSQL01.dbaglobe.com ] for the SQL Server service. Windows return code: 0x21c7, state: 15. Failure to register a SPN might cause integrated authentication to use NTLM instead of Kerberos. This is an informational message. Further action is only required if Kerberos authentication is required by authentication policies and if the SPN has not been manually registered.
The SQL Server Network Interface library could not register the Service Principal Name (SPN) [ MSSQLSvc/VMMSQL01.dbaglobe.com:1433 ] for the SQL Server service. Windows return code: 0x21c7, state: 15. Failure to register a SPN might cause integrated authentication to use NTLM instead of Kerberos. This is an informational message. Further action is only required if Kerberos authentication is required by authentication policies and if the SPN has not been manually registered.
How to Fix: (Example Service Account is DBAGLOBE\sqlsvcs)
If SELF is not listed, click Add, and then add SELF.
Click Edit
Ensure the following permissions under Permissions are selected:
- Read servicePrincipalName
 - Write servicePrincipalName
 
Click Apply to apply the setting.
Modify the account to make sure the scope is “This object only”.
Check the effective Access to ensure “Write servicePrincipalName” is granted.
Restart SQL Server Services
Grant the privilege via command line:
Additional verification to make sure service account has “Validated write to service principal name” privilege
C:\Users\Administrator>hostnameVMMAD01
C:\Users\Administrator>dsacls CN=sqlsvcs,CN=Users,DC=dbaglobe,DC=com
Owner: DBAGLOBE\Domain Admins
Group: DBAGLOBE\Domain Admins
Access list:
Allow DBAGLOBE\Domain Admins FULL CONTROL
Allow BUILTIN\Account Operators FULL CONTROL
Allow NT AUTHORITY\Authenticated Usersq
SPECIAL ACCESS
READ PERMISSONS
Allow NT AUTHORITY\SELF SPECIAL ACCESS
READ PERMISSONS
LIST CONTENTS
READ PROPERTY
Allow NT AUTHORITY\SYSTEM FULL CONTROL
Allow BUILTIN\Pre-Windows 2000 Compatible Access
SPECIAL ACCESS <Inherited from parent>
READ PERMISSONS
LIST CONTENTS
READ PROPERTY
LIST OBJECT
Allow DBAGLOBE\Enterprise Admins FULL CONTROL <Inherited from parent>
Allow BUILTIN\Pre-Windows 2000 Compatible Access
SPECIAL ACCESS <Inherited from parent>
LIST CONTENTS
Allow BUILTIN\Administrators SPECIAL ACCESS <Inherited from parent>
DELETE
READ PERMISSONS
WRITE PERMISSIONS
CHANGE OWNERSHIP
CREATE CHILD
LIST CONTENTS
WRITE SELF
WRITE PROPERTY
READ PROPERTY
LIST OBJECT
CONTROL ACCESS
Allow DBAGLOBE\RAS and IAS Servers SPECIAL ACCESS for Account Restrictions
READ PROPERTY
Allow DBAGLOBE\RAS and IAS Servers SPECIAL ACCESS for Logon Information
READ PROPERTY
Allow DBAGLOBE\RAS and IAS Servers SPECIAL ACCESS for Group Membership
READ PROPERTY
Allow DBAGLOBE\RAS and IAS Servers SPECIAL ACCESS for Remote Access Information
READ PROPERTY
Allow DBAGLOBE\Cert Publishers SPECIAL ACCESS for userCertificate
WRITE PROPERTY
READ PROPERTY
Allow BUILTIN\Windows Authorization Access Group
SPECIAL ACCESS for tokenGroupsGlobalAndUniversal
READ PROPERTY
Allow BUILTIN\Terminal Server License Servers
SPECIAL ACCESS for terminalServer
WRITE PROPERTY
READ PROPERTY
Allow BUILTIN\Terminal Server License Servers
SPECIAL ACCESS for Terminal Server License Server
WRITE PROPERTY
READ PROPERTY
Allow NT AUTHORITY\Authenticated Users
SPECIAL ACCESS for General Information
READ PROPERTY
Allow NT AUTHORITY\Authenticated Users
SPECIAL ACCESS for Public Information
READ PROPERTY
Allow NT AUTHORITY\Authenticated Users
SPECIAL ACCESS for Personal Information
READ PROPERTY
Allow NT AUTHORITY\Authenticated Users
SPECIAL ACCESS for Web Information
READ PROPERTY
Allow NT AUTHORITY\SELF SPECIAL ACCESS for Personal Information
WRITE PROPERTY
READ PROPERTY
Allow NT AUTHORITY\SELF SPECIAL ACCESS for Phone and Mail Options
WRITE PROPERTY
READ PROPERTY
Allow NT AUTHORITY\SELF SPECIAL ACCESS for Web Information
WRITE PROPERTY
READ PROPERTY
Allow BUILTIN\Pre-Windows 2000 Compatible Access
SPECIAL ACCESS for Account Restrictions <Inherited from parent>
READ PROPERTY
Allow BUILTIN\Pre-Windows 2000 Compatible Access
SPECIAL ACCESS for Logon Information <Inherited from parent>
READ PROPERTY
Allow BUILTIN\Pre-Windows 2000 Compatible Access
SPECIAL ACCESS for Group Membership <Inherited from parent>
READ PROPERTY
Allow BUILTIN\Pre-Windows 2000 Compatible Access
SPECIAL ACCESS for General Information <Inherited from parent>
READ PROPERTY
Allow BUILTIN\Pre-Windows 2000 Compatible Access
SPECIAL ACCESS for Remote Access Information <Inherited from parent>
READ PROPERTY
Allow NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS
SPECIAL ACCESS for tokenGroups <Inherited from parent>
READ PROPERTY
Allow NT AUTHORITY\SELF SPECIAL ACCESS for msDS-AllowedToActOnBehalfOfOtherIdentity <Inherited from parent>
WRITE PROPERTY
READ PROPERTY
Allow NT AUTHORITY\SELF SPECIAL ACCESS for Private Information <Inherited from parent>
WRITE PROPERTY
READ PROPERTY
CONTROL ACCESS
Allow NT AUTHORITY\SELF SPECIAL ACCESS for Validated write to service principal name
WRITE PROPERTY
READ PROPERTY
Allow Everyone Change Password
Allow NT AUTHORITY\SELF Change Password
Allow NT AUTHORITY\SELF Send As
Allow NT AUTHORITY\SELF Receive As
Permissions inherited to subobjects are:
Inherited to all subobjects
Allow DBAGLOBE\Enterprise Admins FULL CONTROL <Inherited from parent>
Allow BUILTIN\Pre-Windows 2000 Compatible Access
SPECIAL ACCESS <Inherited from parent>
LIST CONTENTS
Allow BUILTIN\Administrators SPECIAL ACCESS <Inherited from parent>
DELETE
READ PERMISSONS
WRITE PERMISSIONS
CHANGE OWNERSHIP
CREATE CHILD
LIST CONTENTS
WRITE SELF
WRITE PROPERTY
READ PROPERTY
LIST OBJECT
CONTROL ACCESS
Allow NT AUTHORITY\SELF SPECIAL ACCESS for msDS-AllowedToActOnBehalfOfOtherIdentity <Inherited from parent>
WRITE PROPERTY
READ PROPERTY
Allow NT AUTHORITY\SELF SPECIAL ACCESS for Private Information <Inherited from parent>
WRITE PROPERTY
READ PROPERTY
CONTROL ACCESS
Inherited to computer
Allow NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS
SPECIAL ACCESS for tokenGroups <Inherited from parent>
READ PROPERTY
Inherited to group
Allow NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS
SPECIAL ACCESS for tokenGroups <Inherited from parent>
READ PROPERTY
Inherited to computer
Allow NT AUTHORITY\SELF SPECIAL ACCESS for msTPM-TpmInformationForComputer <Inherited from parent>
WRITE PROPERTY
Inherited to group
Allow BUILTIN\Pre-Windows 2000 Compatible Access
SPECIAL ACCESS <Inherited from parent>
READ PERMISSONS
LIST CONTENTS
READ PROPERTY
LIST OBJECT
Inherited to inetOrgPerson
Allow BUILTIN\Pre-Windows 2000 Compatible Access
SPECIAL ACCESS <Inherited from parent>
READ PERMISSONS
LIST CONTENTS
READ PROPERTY
LIST OBJECT
Allow BUILTIN\Pre-Windows 2000 Compatible Access
SPECIAL ACCESS for General Information <Inherited from parent>
READ PROPERTY
Allow BUILTIN\Pre-Windows 2000 Compatible Access
SPECIAL ACCESS for Group Membership <Inherited from parent>
READ PROPERTY
Allow BUILTIN\Pre-Windows 2000 Compatible Access
SPECIAL ACCESS for Logon Information <Inherited from parent>
READ PROPERTY
Allow BUILTIN\Pre-Windows 2000 Compatible Access
SPECIAL ACCESS for Account Restrictions <Inherited from parent>
READ PROPERTY
Allow BUILTIN\Pre-Windows 2000 Compatible Access
SPECIAL ACCESS for Remote Access Information <Inherited from parent>
READ PROPERTY
The command completed successfully
References: http://mssqlwiki.com/tag/the-sql-server-network-interface-library-could-not-register-the-service-principal-name-spn/