在 EF 核心中构建脚手架时出现 sql 连接字符串错误?

Getting an sql connection string error when scaffolding in EF core?

关于背景信息,我 运行 在 Arch Linux VScode 上使用 .NET 核心,我也在 SQL 服务器 运行 上使用拱Linux。当我通过 sqlcmd 或 VScode SQL 扩展连接到服务器时,一切正常。

只有在搭建脚手架时我才会出错,所以我的连接字符串可能是错误的,我已经搜索并基本上尝试了我掌握的一切。任何帮助将不胜感激,提前致谢。

当我运行命令

[wasiim@wasiim-PC WebApiServerApp]$ dotnet ef dbcontext scaffold "Server=wasiim-PC;Database=ConkerDb;User Id=sa;Password=********" Microsoft.EntityFrameworkCore.SqlServer -o Models -c ConkerDbContext -v

我收到这个错误:

System.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 35 - An internal exception was caught)

System.Net.Internals.SocketExceptionFactory+ExtendedSocketException (00000005, 6): No such device or address

at System.Net.Dns.InternalGetHostByName(String hostName)
at System.Net.Dns.GetHostAddresses(String hostNameOrAddress)
at System.Data.SqlClient.SNI.SNITCPHandle.Connect(String serverName, Int32 port, TimeSpan timeout)
at System.Data.SqlClient.SNI.SNITCPHandle..ctor(String serverName, Int32 port, Int64 timerExpire, Object callbackObject, Boolean parallel)

我也试过

[wasiim@wasiim-PC WebApiServerApp]$ dotnet ef dbcontext scaffold "Server=(wasiim-PC)\MSSQLSERVER;Database=ConkerDb;User Id=sa;Password=********" Microsoft.EntityFrameworkCore.SqlServer -o Models -c ConkerDbContext -v

我得到了错误

System.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 25 - Connection string is not valid)

at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling, String accessToken)
at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)

mssql错误日志

错误日志没有显示我所做的任何连接尝试,所以我假设它没有建立连接,是的,服务正在 运行ning。我 ping 了 wasiim-PC,ping 了本地主机,ping 了 127.0.0.1,它们都工作得很好。

[wasiim@wasiim-PC log]$ sudo cat errorlog
2019-07-04 14:53:24.34 Server      Microsoft SQL Server 2017 (RTM-CU15) (KB4498951) - 14.0.3162.1 (X64) 
        May 15 2019 19:14:30 
        Copyright (C) 2017 Microsoft Corporation
        Developer Edition (64-bit) on Linux (Arch Linux)
2019-07-04 14:53:24.35 Server      UTC adjustment: -5:00
2019-07-04 14:53:24.35 Server      (c) Microsoft Corporation.
2019-07-04 14:53:24.36 Server      All rights reserved.
2019-07-04 14:53:24.36 Server      Server process ID is 32.
2019-07-04 14:53:24.36 Server      Logging SQL Server messages in file '/var/opt/mssql/log/errorlog'.
2019-07-04 14:53:24.37 Server      Registry startup parameters: 
         -d /var/opt/mssql/data/master.mdf
         -l /var/opt/mssql/data/mastlog.ldf
         -e /var/opt/mssql/log/errorlog
2019-07-04 14:53:24.38 Server      SQL Server detected 1 sockets with 4 cores per socket and 8 logical processors per socket, 8 total logical processors; using 8 logical processors based on SQL Server licensing. This is an informational message; no user action is required.
2019-07-04 14:53:24.39 Server      SQL Server is starting at normal priority base (=7). This is an informational message only. No user action is required.
2019-07-04 14:53:24.39 Server      Detected 12632 MB of RAM. This is an informational message; no user action is required.
2019-07-04 14:53:24.40 Server      Using conventional memory in the memory manager.
2019-07-04 14:53:24.41 Server      Large Page Allocated: 32MB 
2019-07-04 14:53:24.92 Server      Buffer pool extension is already disabled. No action is necessary. 
2019-07-04 14:53:25.16 Server      InitializeExternalUserGroupSid failed. Implied authentication will be disabled.
2019-07-04 14:53:25.16 Server      Implied authentication manager initialization failed. Implied authentication will be disabled.
2019-07-04 14:53:25.18 Server      Successfully initialized the TLS configuration. Allowed TLS protocol versions are ['1.0 1.1 1.2']. Allowed TLS ciphers are ['ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:!DHE-RSA-AES256-GCM-SHA384:!DHE-RSA-AES128-GCM-SHA256:!DHE-RSA-AES256-SHA:!DHE-RSA-AES128-SHA'].
2019-07-04 14:53:25.21 Server      The maximum number of dedicated administrator connections for this instance is '1'
2019-07-04 14:53:25.22 Server      Node configuration: node 0: CPU mask: 0x00000000000000ff:0 Active CPU mask: 0x00000000000000ff:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.
2019-07-04 14:53:25.22 Server      Using dynamic lock allocation.  Initial allocation of 2500 Lock blocks and 5000 Lock Owner blocks per node.  This is an informational message only.  No user action is required.
2019-07-04 14:53:25.23 Server      In-Memory OLTP initialized on standard machine.
2019-07-04 14:53:25.34 Server      Database Instant File Initialization: enabled. For security and performance considerations see the topic 'Database Instant File Initialization' in SQL Server Books Online. This is an informational message only. No user action is required.
2019-07-04 14:53:25.35 Server      Query Store settings initialized with enabled = 1, 
2019-07-04 14:53:25.35 spid6s      Starting up database 'master'.
2019-07-04 14:53:25.35 Server      Software Usage Metrics is disabled.
2019-07-04 14:53:25.57 spid6s      Resource governor reconfiguration succeeded.
2019-07-04 14:53:25.57 spid6s      SQL Server Audit is starting the audits. This is an informational message. No user action is required.
2019-07-04 14:53:25.58 spid6s      SQL Server Audit has started the audits. This is an informational message. No user action is required.
2019-07-04 14:53:25.67 spid6s      SQL Trace ID 1 was started by login "sa".
2019-07-04 14:53:25.69 spid6s      Server name is 'wasiim-PC'. This is an informational message only. No user action is required.
2019-07-04 14:53:25.72 spid24s     Always On: The availability replica manager is starting. This is an informational message only. No user action is required.
2019-07-04 14:53:25.72 spid22s     Starting up database 'msdb'.
2019-07-04 14:53:25.72 spid23s     Starting up database 'ConkerDb'.
2019-07-04 14:53:25.72 spid9s      Starting up database 'mssqlsystemresource'.
2019-07-04 14:53:25.73 spid24s     Always On: The availability replica manager is waiting for the instance of SQL Server to allow client connections. This is an informational message only. No user action is required.
2019-07-04 14:53:25.74 spid9s      The resource database build version is 14.00.3162. This is an informational message only. No user action is required.
2019-07-04 14:53:25.78 spid9s      Starting up database 'model'.
2019-07-04 14:53:26.02 spid23s     Parallel redo is started for database 'ConkerDb' with worker pool size [4].
2019-07-04 14:53:26.02 spid19s     A self-generated certificate was successfully loaded for encryption.
2019-07-04 14:53:26.03 spid19s     Server is listening on [ 'any' <ipv6> 1433].
2019-07-04 14:53:26.04 spid19s     Server is listening on [ 'any' <ipv4> 1433].
2019-07-04 14:53:26.04 Server      Server is listening on [ ::1 <ipv6> 1434].
2019-07-04 14:53:26.04 Server      Server is listening on [ 127.0.0.1 <ipv4> 1434].
2019-07-04 14:53:26.04 Server      Dedicated admin connection support was established for listening locally on port 1434.
2019-07-04 14:53:26.05 spid19s     SQL Server is now ready for client connections. This is an informational message; no user action is required.
2019-07-04 14:53:26.08 spid9s      Polybase feature disabled.
2019-07-04 14:53:26.09 spid9s      Clearing tempdb database.
2019-07-04 14:53:26.13 spid6s      Parallel redo is shutdown for database 'ConkerDb' with worker pool size [4].
2019-07-04 14:53:26.15 Server      Failed to verify the Authenticode signature of 'C:\binn\secforwarder.dll'. Signature verification of SQL Server DLLs will be skipped. Genuine copies of SQL Server are signed. Failure to verify the Authenticode signature might indicate that this is not an authentic release of SQL Server. Install a genuine copy of SQL Server or contact customer support.
2019-07-04 14:53:26.38 spid9s      Starting up database 'tempdb'.
2019-07-04 14:53:26.63 spid9s      The tempdb database has 1 data file(s).
2019-07-04 14:53:26.64 spid24s     The Service Broker endpoint is in disabled or stopped state.
2019-07-04 14:53:26.65 spid24s     The Database Mirroring endpoint is in disabled or stopped state.
2019-07-04 14:53:26.67 spid24s     Service Broker manager has started.
2019-07-04 14:53:26.70 spid6s      Recovery is complete. This is an informational message only. No user action is required.
2019-07-04 14:58:44.68 spid51      Using 'dbghelp.dll' version '4.0.5'
2019-07-04 15:00:33.43 spid51      Attempting to load library 'xplog70.dll' into memory. This is an informational message only. No user action is required.
2019-07-04 15:00:33.54 spid51      Using 'xplog70.dll' version '2017.140.3162' to execute extended stored procedure 'xp_msver'. This is an informational message only; no user action is required.

更新:完全错误

Using project '/home/wasiim/Documents/CodingProjects/ProjectConker/WebApiServerApp/WebApiServerApp.csproj'. Using startup project '/home/wasiim/Documents/CodingProjects/ProjectConker/WebApiServerApp/WebApiServerApp.csproj'. Writing '/home/wasiim/Documents/CodingProjects/ProjectConker/WebApiServerApp/obj/WebApiServerApp.csproj.EntityFrameworkCore.targets'... dotnet msbuild /target:GetEFProjectMetadata /property:EFProjectMetadataFile=/tmp/tmpDCtI3l.tmp /verbosity:quiet /nologo /home/wasiim/Documents/CodingProjects/ProjectConker/WebApiServerApp/WebApiServerApp.csproj Writing '/home/wasiim/Documents/CodingProjects/ProjectConker/WebApiServerApp/obj/WebApiServerApp.csproj.EntityFrameworkCore.targets'... dotnet msbuild /target:GetEFProjectMetadata /property:EFProjectMetadataFile=/tmp/tmpPGLuFn.tmp /verbosity:quiet /nologo /home/wasiim/Documents/CodingProjects/ProjectConker/WebApiServerApp/WebApiServerApp.csproj dotnet build /home/wasiim/Documents/CodingProjects/ProjectConker/WebApiServerApp/WebApiServerApp.csproj /p:GenerateRuntimeConfigurationFiles=True /verbosity:quiet /nologo

Build succeeded. 0 Warning(s) 0 Error(s)

Time Elapsed 00:00:03.18 dotnet exec --depsfile /home/wasiim/Documents/CodingProjects/ProjectConker/WebApiServerApp/bin/Debug/netcoreapp2.2/WebApiServerApp.deps.json --additionalprobingpath /home/wasiim/.nuget/packages --runtimeconfig /home/wasiim/Documents/CodingProjects/ProjectConker/WebApiServerApp/bin/Debug/netcoreapp2.2/WebApiServerApp.runtimeconfig.json /home/wasiim/.nuget/packages/microsoft.entityframeworkcore.tools.dotnet/2.0.3/tools/netcoreapp2.0/ef.dll dbcontext scaffold "Server=(wasiim-PC)\MSSQLSERVER;Database=ConkerDb;User Id=sa;Password=come1517" Microsoft.EntityFrameworkCore.SqlServer -o Models -c ConkerDbContext --assembly /home/wasiim/Documents/CodingProjects/ProjectConker/WebApiServerApp/bin/Debug/netcoreapp2.2/WebApiServerApp.dll --startup-assembly /home/wasiim/Documents/CodingProjects/ProjectConker/WebApiServerApp/bin/Debug/netcoreapp2.2/WebApiServerApp.dll --project-dir /home/wasiim/Documents/CodingProjects/ProjectConker/WebApiServerApp/ --verbose --root-namespace WebApiServerApp Using assembly 'WebApiServerApp'. Using startup assembly 'WebApiServerApp'. Using application base '/home/wasiim/Documents/CodingProjects/ProjectConker/WebApiServerApp/bin/Debug/netcoreapp2.2'. Using working directory '/home/wasiim/Documents/CodingProjects/ProjectConker/WebApiServerApp'. Using root namespace 'WebApiServerApp'. Using project directory '/home/wasiim/Documents/CodingProjects/ProjectConker/WebApiServerApp/'. Finding design-time services for provider 'Microsoft.EntityFrameworkCore.SqlServer'... Using design-time services from provider 'Microsoft.EntityFrameworkCore.SqlServer'. Finding design-time services referenced by assembly 'WebApiServerApp'. No referenced design-time services were found. Finding IDesignTimeServices implementations in assembly 'WebApiServerApp'... No design-time services were found.

如你所见,在我得到异常之前它说没有找到设计时服务,这似乎是相关的,我在网上不知疲倦地搜索但无法解决这个问题。希望有人能帮助我,在此先感谢。

这就是我一直在说的。我不认为 N​​et 错误消息是准确的。 Net 正在尝试使用 IP 地址(名称)和端口号建立安全的 TCP 连接。连接未完成,Net 表示错误可能是由服务引起的。 TCP 错误失败有四个原因 1) 没有到服务器的路由 2) 端口被阻塞 3) 服务器没有监听 4) TLS/SSL 安全连接失败。

从日志文件 (LDF) 中我们可以得知 SQL 服务器从未获得连接,因为没有登录记录。我认为是时候使用像 fiddler 的 wireshark 这样的嗅探器来准确查看连接失败的位置了。

我不知道如何配置linux,怀疑设置有误。我不确定 linux 和 windows 使用相同的 IP 地址是否可行。发送消息没问题。但是当接收到 IP 而没有 linux 和 Windows 的不同 IP 地址时,以太网接口不知道是否发送和接收消息 Windows 接口或 Linux 接口。看起来将使用本例中的端口号。 linux 的端口 1433 和 windows 的端口 1434。使用嗅探器可以确认。因此,我会首先使用 SSMS 让 Net 端工作,然后让 SSMS 工作,这应该可以解决 Net 问题。

我运行这个,我猜这次它成功了:

dotnet ef dbcontext scaffold "Server=wasiim-PC;Database=ConkerDb;User Id=sa;Password=*********" Microsoft.EntityFrameworkCore.SqlServer -o Models -c ConkerDbContext -v