问题
For background info, I'm running .NET core on Arch Linux VScode and I also have SQL Server running on Arch Linux. When I connect to the server via sqlcmd
or through the VScode SQL extension, everything works fine.
Only when scaffolding am I getting errors, so my connection string is probably wrong, and I've searched and basically tried everything within my grasp. Any help would be much appreciated, thanks in advance.
When I run the command
[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
I get this error:
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)
I've also tried doing
[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
and I get the error
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 error log
the errorlog display nothing about any of the connection attempts I've made so I'm assuming it didn't make a connection, and yes the service is running. I pinged wasiim-PC, pinged localhost, pinged 127.0.0.1 they're all working just fine.
[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.
Update: full error
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.
as you can see, before I get the exceptions it says No design-time services were found, it seems related, I searched around the web tirelessly but couldn't fix this. Hope someone can help me, thanks in advance.
回答1:
That is what I've been saying. I do not thing the Net error message are accurate. Net is trying to make a secure TCP connection using an IP address (name) and port number. The connection is not completing and Net is saying the error could be due to the service. TCP errors fail for four reasons 1) No Route to server 2) Port blocked 3) Server not listening 4) TLS/SSL failing for a secure connection.
From the Log file (LDF) we can tell the SQL Server never got the connection because there is no record of a login. I think it time to use a sniffer like wireshark of fiddler to see exactly where the connection is failing.
I do not know how to configure linux and suspect the setup is wrong. I'm not sure if using the same IP address for both linux and windows will work. Sending message are fine. But when an IP is received without having a different IP address for linux and Windows the Ethernet interface does not know whether to send and receive message up the Windows interface or Linux interface. It looks like the port number in this case will be used. Port 1433 for linux and port 1434 for windows. Using a sniffer would confirm. So I would first get the Net side working by using SSMS and get SSMS working which should solve the Net issue.
回答2:
I ran this and it just worked this time I guess
dotnet ef dbcontext scaffold "Server=wasiim-PC;Database=ConkerDb;User Id=sa;Password=*********" Microsoft.EntityFrameworkCore.SqlServer -o Models -c ConkerDbContext -v
来源:https://stackoverflow.com/questions/56877878/getting-an-sql-connection-string-error-when-scaffolding-in-ef-core