-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathRun-MultiServer-Serial-Python.py
More file actions
85 lines (65 loc) · 2.33 KB
/
Copy pathRun-MultiServer-Serial-Python.py
File metadata and controls
85 lines (65 loc) · 2.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import pyodbc
from prettytable import PrettyTable
from prettytable import from_db_cursor
import argparse
from datetime import datetime
import os
from slack_sdk import WebClient
parser = argparse.ArgumentParser(description="Script to execute sql query on multiple SQLServer",
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument("-s", "--inventory_server", type=str, required=False, action="store", default="localhost", help="Inventory Server")
parser.add_argument("-d", "--inventory_database", type=str, required=False, action="store", default="DBA", help="Inventory Database")
args=parser.parse_args()
today = datetime.today()
today_str = today.strftime('%Y-%m-%d')
inventory_server = args.inventory_server
inventory_database = args.inventory_database
# Get list of servers from Inventory
invCon = pyodbc.connect("Driver={SQL Server Native Client 11.0};"
f"Server={inventory_server};"
f"Database={inventory_database};"
"Trusted_Connection=yes;")
invCursor = invCon.cursor()
sql_get_servers = f"""
set nocount on;
select id.sql_instance, id.sql_instance_port, id.[database]
from dbo.instance_details id
where id.is_enabled = 1 and id.is_available = 1
"""
invCursor.execute(sql_get_servers)
servers = invCursor.fetchall()
invCursor.close()
invCon.close()
disk_result = []
ptable = PrettyTable()
iter_no = 0
for server_row in servers:
iter_no += 1
server = server_row.sql_instance
port = server_row.sql_instance_port
if port is None:
port = 1433
database = server_row.database
print(f"Working on [{server}].[{database}]..")
cnxn = pyodbc.connect("Driver={SQL Server Native Client 11.0};"
f"Server={server},{port};"
f"Database={database};"
"Trusted_Connection=yes;")
sql_query = f"""
set nocount on;
select top 1 [sql_instance] = '{server}', *
from dbo.disk_space ds
"""
#print(sql_query)
cursor = cnxn.cursor()
cursor.execute(sql_query)
if iter_no == 1:
ptable.field_names = [column[0] for column in cursor.description]
for row in cursor.fetchall():
disk_result.append(row)
ptable.add_row(row)
#print(result)
cursor.close()
cnxn.close()
print(disk_result)
print(ptable)