无法打开登录名请求的数据库"'name': 'master'"。登录失败



我现在遇到了错误

无法打开数据库"'name': 'master';登录请求。登录失败

当我尝试在Django/Python web应用程序中执行PrintCSV视图函数时

该函数应该读取服务器上的每个数据库并打印区域中的所有帐户。

我不确定这个问题是与我的登录权限还是与我的代码本身有关。

Views.py:

def PrintCSV(request):
#Getting list of DB Names
cnxn = pyodbc.connect('DRIVER={SQL Server};'
'SERVER=serverIP;'
'PORT=port;'
'UID=kyle_dev_ro;'
'PWD=password;')
databaseName = 'SELECT name FROM sys.databases'
cursor = cnxn.cursor();
cursor.execute(databaseName);
XdatabaseNames = cursor.fetchall()
cursor.close()
dbNames= []
for row in XdatabaseNames:
rdict = {}
rdict["name"] = row[0]
dbNames.append(rdict)
#Starting CSV
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="Avonlea_file.csv"'
writer = csv.writer(response)
writer.writerow(['Unit', 'Balance'
])
for x in dbNames:
connect = pyodbc.connect('DRIVER={SQL Server};'
'SERVER=192.168.1.1;'
'PORT=1433;'
'Database=' + str(x) + ';'
'UID=kyle_dev_ro;'
'PWD=fh$sa#8d#7F8Y3;')
XaccAreas = " SELECT Account, DCBalance FROM [dbo].[Client] where iAgeingTermID = '3' AND DCBalance < 0 "
cursor = cnxn.cursor();
cursor.execute(XaccAreas);
accAreas = cursor.fetchall()
cursor.close()
for z in accAreas:
rdict = {}
rdict["Account"] = z[0]
rdict["Balance"] = z[1]
writer.writerow([
'',
x,
'',
])
writer.writerow([
rdict[0],
rdict[1],
])
return response

完全错误:

('42000', '[42000] [Microsoft][ODBC SQL Server Driver][SQL . s无法打开数据库"'name': 'master';由登录。登录失败。(4060) (SQLDriverConnect);[42000][Microsoft][ODBC SQL Server Driver]无效的连接字符串属性(0);[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]不能打开数据库'name': 'master' ';登录请求。登录失败了。(4060);[42000] [Microsoft][ODBC SQL Server Driver]无效连接字符串属性(0)')

当我在Microsoft SQL Studio上设置登录时,我已经确保所有的"映射";需要打勾的数据库被打勾了,我的默认数据库被设置为"master">

所以我不确定这个错误是否来自我给这个登录的特权?

你犯了两个错误:

  • 'Database=' + str(x) + ';'应该是'Database=' + str(x["name"]) + ';',因为您需要获取特定列,而不是整行
  • 你可能想从你的查询中过滤掉系统数据库
select name
from sys.databases
where database_id > 4

相关内容

  • 没有找到相关文章

最新更新