无法通过代码访问数据库,但可以使用SSMS

时间:2019-01-22 09:57:22

标签: c# ssms sql-server-2017

我可以使用

从SSMS登录数据库。
#!/bin/python3
import os
import glob
import datetime
import subprocess

def Copy_Logs():
    # Variable Declaration to get the month and Curr_date_month
    Info_month = datetime.datetime.now().strftime("%B")
    Curr_date_month = datetime.datetime.now().strftime("%b_%d_%y") 
    Sourcedir = "/data1/logs"
    Destdir = "/data2/logs/"
    ###### End of your variable section #######################
    # The result of the below glob _is_ a full path
    for filename in glob.glob("{2}/{0}/{1}/*.txt".format(Info_month, Curr_date_month, Sourcedir)):
        if os.path.getsize(filename) > 0:
            if not os.path.exists(Destdir + os.path.basename(filename)):
                subprocess.call(['rsync', '-avz', '--min-size=1', filename, Destdir ])

if __name__ == '__main__':
    Copy_Logs()

用户名:localhost\MSSQLSERVER01 (Windows身份验证)

但是当我尝试从应用程序连接时,我会得到

DOMAIN\user.name

即使我的帐户可以访问SSMS中的数据库并具有sysadmin权限。

检查SQL日志,只要登录失败,我就可以看到此消息:

Error Number:18456,State:1,Class:14
Login failed for user 'DOMAIN\User.Name'.   

我尝试将2019-01-22 09:46:42.13 Logon Login failed for user 'DOMAIN\User.Name'. Reason: Could not find a login matching the name provided. [CLIENT: <local machine>] 2019-01-22 09:48:33.74 Logon Error: 18456, Severity: 14, State: 5. NT AUTHORIRTY\NETWORK SERVICE都添加到/server/security/logins中,但这没什么作用

为什么会发生这种情况,或者当错误消息基本不提供信息时如何调试?


连接字符串:

/server/database/security/users

但我也尝试过

Server=localhost; Database=dbname; Trusted_Connection=True;MultipleActiveResultSets=true;

具有相同的结果

2 个答案:

答案 0 :(得分:1)

您的连接字符串应如下所示:

  

data source = Server \ gaurav.goel; database = DBName; Integrated Security = True; MultipleActiveResultSets = True

另一种方法是使用UDL文件-在计算机上创建一个文本文件,并将其扩展名更改为UDL。然后打开此文件,尝试将连接添加到该文件中,并检查是否可以连接。

答案 1 :(得分:1)

如果还没有做的话,可能还需要做一件事:

  • 右键单击SSMS中的服务器,选择“属性”选项。

  • 选择“连接”标签。

  • 选中“允许到该服务器的远程连接”选项。

如果您尝试使用Windows身份验证远程访问它:

  • 右键单击服务器,然后单击“属性”

  • 转到“安全性”页面

  • 在Server身份验证下,选择SQL Server和Windows 身份验证模式单选按钮

  • 单击“确定”

  • 重新启动SQL Services

来自:https://stackoverflow.com/a/23395581/6391339