在EF核心脚手架中收到SQL连接字符串错误吗?

时间:2019-07-03 21:02:06

标签: c# sql-server entity-framework sqlconnection scaffolding

有关背景信息,我在Arch Linux VScode上运行.NET core,并且我也在Arch Linux上运行SQL Server。通过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):建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称正确,并且已将SQL Server配置为允许远程连接。 (提供者:TCP提供程序,错误:35-捕获到内部异常)

     

System.Net.Internals.SocketExceptionFactory + ExtendedSocketException(00000005,6):没有此类设备或地址

     

在System.Net.Dns.InternalGetHostByName(字符串hostName)
  在System.Net.Dns.GetHostAddresses(String hostNameOrAddress)
  在System.Data.SqlClient.SNI.SNITCPHandle.Connect处(字符串serverName,Int32端口,TimeSpan超时)
  在System.Data.SqlClient.SNI.SNITCPHandle..ctor(字符串服务器名,Int32端口,Int64 timerExpire,对象callbackObject,布尔并行)

我也尝试过

[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):建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称正确,并且已将SQL Server配置为允许远程连接。 (提供者:SQL网络接口,错误:25-连接字符串无效)

     在System.Data.SqlClient.SqlInternalConnectionTds..ctor中的

(DbConnectionPoolIdentity身份,SqlConnectionString connectionOptions,SqlCredential凭据,对象providerInfo,String newPassword,SecureString newSecurePassword,布尔型redirectedUserInstance,SqlConnectionString userConnectionOptions,SessionData reconnectSessionData,Boolean
/>   在System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions选项,DbConnectionPoolKey poolKey,对象poolGroupProviderInfo,DbConnectionPool池,DbConnection owningConnection,DbConnectionOptions userOptions)

mssql错误日志

该错误日志不显示任何我已进行的连接尝试,因此我假设它未建立连接,并且该服务正在运行。我对wasiim-PC进行了ping操作,对localhost进行了ping操作,对127.0.0.1进行了ping操作,它们都工作正常。

[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.

更新:完全错误

  

使用项目'/home/wasiim/Documents/CodingProjects/ProjectConker/WebApiServerApp/WebApiServerApp.csproj'。   使用启动项目“ /home/wasiim/Documents/CodingProjects/ProjectConker/WebApiServerApp/WebApiServerApp.csproj”。   编写'/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   编写'/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

     

构建成功。       0警告       0个错误

     

经过的时间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支架“服务器=(wasiim-PC)\ MSSQLSERVER;数据库= ConkerDb;用户ID = sa;密码= come1517” Microsoft.EntityFrameworkCore.SqlServer -o模型-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   使用程序集“ WebApiServerApp”。   使用启动程序集“ WebApiServerApp”。   使用应用程序基础'/home/wasiim/Documents/CodingProjects/ProjectConker/WebApiServerApp/bin/Debug/netcoreapp2.2'。   使用工作目录“ / home / wasiim / Documents / CodingProjects / ProjectConker / WebApiServerApp”。   使用根名称空间“ WebApiServerApp”。   使用项目目录“ / home / wasiim / Documents / CodingProjects / ProjectConker / WebApiServerApp /”。   正在为提供程序'Microsoft.EntityFrameworkCore.SqlServer'查找设计时服务...   使用提供程序“ Microsoft.EntityFrameworkCore.SqlServer”中的设计时服务。   查找程序集“ WebApiServerApp”引用的设计时服务。   找不到参考的设计时服务。   在程序集“ WebApiServerApp”中查找IDesignTimeServices实现...   找不到设计时服务。

如您所见,

在我收到未找到设计时服务的异常信息之前,它似乎与之相关,我不知疲倦地在网上搜索,但无法解决。希望有人能帮助我,谢谢。

2 个答案:

答案 0 :(得分:0)

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

从日志文件(LDF)中,我们可以知道SQL Server从未获得连接,因为没有登录记录。我认为是时候使用像Fiddler的Wireshk这样的嗅探器来确切查看连接失败的地方了。

我不知道如何配置linux,并怀疑设置错误。我不确定对于Linux和Windows是否使用相同的IP地址是否可以工作。发送消息很好。但是,如果在没有Linux和Windows的IP地址的情况下收到IP,则以太网接口不知道是否发送和接收消息  Windows界面或Linux界面。看起来在这种情况下将使用端口号。 Linux的端口1433,Windows的端口1434。使用嗅探器将确认。因此,我首先要通过使用SSMS来使Net端正常工作,并使SSMS能够解决Net问题。

答案 1 :(得分:0)

我运行了它,我猜这一次才起作用

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