Java падлучэнне да базы дадзеных SQL Server: Увайсці Збой карыстальніка «са»

Я спрабую падлучыцца да базы дадзеных, якую я стварыў з дапамогай SQL Server 2012, але я атрымліваю паведамленне пра памылку. Гэта код для падлучэння:

Driver d = (Driver)Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
        String DB_URL = "jdbc:sqlserver://localhost:1433;databaseName=Tema6;user=sa;password=123456";
        java.sql.Connection con = DriverManager.getConnection(DB_URL);

І гэта памылка, што я атрымліваю:

Login failed for user 'sa'. ClientConnectionId:e6335e64-ca68-4d72-8939-5b7ded951424

Я ўключыў пратакол TCP/IP з SQL Server Config, я ўпэўнены, што уліковы запіс «SA» ўключана і што пароль правільны. Можа хто-небудзь дапамагчы мне, калі ласка?

EDIT: This is the entire stacktrace.

com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'sa'. ClientConnectionId:e6335e64-ca68-4d72-8939-5b7ded951424
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:254)
at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:84)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2908)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:2234)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41)
at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:2220)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1326)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at Connection.main(Connection.java:12)

EDIT2: After replacing the driver with jTDS:

java.sql.SQLException: Login failed for user 'sa'.
at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:372)
at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2893)
at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2335)
at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:609)
at net.sourceforge.jtds.jdbc.JtdsConnection.(JtdsConnection.java:369)
at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:183)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at Connection.main(Connection.java:19)
4
Калі ласка, пост ўсяго StackTrace памылкі злучэння для аналізу магчымых праблем.
дададзена аўтар Luiggi Mendoza, крыніца
Сапраўды дзіўна, StackTrace не дае дастаткова інфармацыі для выяўлення памылкі. Паспрабуйце выкарыстаць іншы драйвер JDBC для падлучэння да ядра базы дадзеных SQL Server і праверце памылкі там. Я рэкамендую выкарыстоўваць jTDS .
дададзена аўтар Luiggi Mendoza, крыніца
Тады павінна быць праблема з рухавіком SQL Server. Папытаеце падтрымку на сваёй старонцы.
дададзена аўтар Luiggi Mendoza, крыніца
Што рабіць, калі вы дадаеце integratedSecurity = хлусня; у радку злучэння?
дададзена аўтар Brandon, крыніца
Паспрабуйце стварыць новы карыстальнік з паказаным паролем і даць ролю сістэмнага адміністратара. Гэта скажа вам, калі SQL Server пераблыталіся ці нешта каля рахункаў «са».
дададзена аўтар Brandon, крыніца
Які карыстач з'яўляецца ўладальнікам базы дадзеных, якую вы спрабуеце далучыцца? Калі карыстач «са» не мае неабходных дазволаў на гэтай базе дадзеных, то гэта можа выклікаць праблемы, для ўваходу вы маеце.
дададзена аўтар luther07, крыніца
Гэтая памылка я бачыў у той час, рашэнні могуць быць рознымі, але вы павінны спачатку праверыць наступнае: 1. Адкрыйце SQL Server Management Studio і праверыць «SA» дазволу. 2. Загрузіце апошнюю версію драйвера JDBC ( Microsoft. кім/EN-US/загрузіць/& hellip; ) 3. Здыміце: 1433 PORT з DB_URL, у некаторых выпадках порт не з'яўляецца неабходным, а часам прыводзіць да памылак. 4. Павінен быць: String DB_URL = "JDBC: SQLServer://лакальным; Databasename = Tema6, карыстальнік = са; паролі & ZWNJ; ог = 123456"; або паспрабаваць з 127.0.0.1
дададзена аўтар Gaston Flores, крыніца
@Brandon я ўсё яшчэ атрымліваю тую ж памылку.
дададзена аўтар Daniel Pop, крыніца
@LuiggiMendoza я замяніў кіроўца, які вы звязаны, і гэта да гэтага часу не працуе. Паведамленне пра памылку ў значнай ступені тое ж самае.
дададзена аўтар Daniel Pop, крыніца
@GastonF. Я перакаштаваў шмат камбінацый для URL-адрас радкі, але нічога не дапамагала. Дзякуй, у любым выпадку.
дададзена аўтар Daniel Pop, крыніца

6 адказы

I haven't really checked out your stack trace but it is very common for people to forget about allowing remote connections to server. Try right-click on server instance (Object Explorer) > Properties > Connections and check Allow remote connections to this server

2
дададзена
У дыспетчару канфігурацыі SQL Server, вы пачалі SQL Server, агент SQL Server і SQL Server, аглядальнік?
дададзена аўтар andrezzoid, крыніца
Так, гэта ўжо праверана.
дададзена аўтар Daniel Pop, крыніца

Я не думаю, што гэта пытанне кіроўцы, так як паведамленне паказвае на тое, што ён спрабаваў і ня аўтэнтыфікацыі, так па крайняй меры атрымалася падлучыцца.

Першы (асноўны) пытанне, які я хацеў спытаць, ці з'яўляецца ты ўпэўнены, «123456» правільны пароль для са ўліковага запісу? Праверце гэта, увайшоўшы ў сістэму з SQL Server Management Studio, як «са».

Далей я хацеў бы паспрабаваць стварыць карыстальніка ў SQL Server і пастаўляць гэтыя уліковыя дадзеныя ў радку злучэння (як гэта было прапанавана Brandon)

Далей (для задавальнення) я б уключыць праверку сапраўднасці ў мяшаным рэжыме і паспрабуйце выкарыстоўваць свае ўліковыя дадзеныя карыстальніка Windows у радку злучэння.

Вось некаторыя інструкцыі, якія я напісаў для налады сеткі ў SQL Server ў мінулым. Вызначана варта пераправяраць налады:

Configuring SQL Server Networking
Out of the box, SQL Server 2008 Express does not support TCP connections on a fixed port. To resolve this: From the windows start menu open "SQL Server Configuration Manager" Under "SQL Server Network Configuration" --> "Protocols for SQLEXPRESS" open the TCP/IP properties On the "Protocol" tab set enabled to YES On tab "IP Addresses" scroll to the bottom Under "IP All" change the TCP Port to 1433 ensure the TCP Dynamic Ports is empty, delete the zero Click apply

У праверцы SQL Server Management Studio: Ад асобніка сервера пстрыкніце правай кнопкай мышы і выберыце Уласцівасці У адпаведнасці з опцыяй бяспекі: пераканайцеся, што «SQL Server і рэжым праверкі сапраўднасці Windows» правяраюцца

2
дададзена
Так гучыць вельмі дзіўна. Зачыстка ствала тут: 1. змена памылкі пры выдаленні Ці спасылкі баз дадзеных з радка падлучэння? 2. Паспрабуйце выкарыстоўваць 127.0.0.1 ў якасці IP-адрасы 3. Try з выкарыстаннем фактычнага IP-сеткі замест лакальнага хаста 4. Паспрабуйце перазагрузіць 5. Паспрабуйце пераўсталяваць! Вось і я свежы з ідэй
дададзена аўтар Simon Curd, крыніца
1. Так, я праверыў, што пароль, і гэта правільна. 2. Я стварыў іншы карыстальнік, і я атрымаў ролю syasdmin. Тым не менш, той жа самы вынік. 3. Я паспрабаваў з дапамогай праверкі сапраўднасці Windows, але, зноў жа, той жа выснова тычыцца канфігурацыі SQL Server Networking, я зрабіў усё, што вы казалі мне яшчэ да таго, я спрабаваў падлучыцца да БД, і ўсё гэта добра. Астатнія настаўленьні з'яўляюцца тыя, па змаўчанні, я нічога не змяніць яшчэ, таму я лічу, гэта так дзіўна.
дададзена аўтар Daniel Pop, крыніца
ТАКІМ ЧЫНАМ, нарэшце, я здаўся на SQL Server, я ўсталяваў MySQL Workbench і зрабіў сервер (я спадзяюся, што гэта правільны тэрмін) з дапамогай XAMPP. На гэты раз усё атрымалася, і я магу працягваць зараз з маім прыкладаннем Java. Дзякуй усім за вашу гатоўнасць.
дададзена аўтар Daniel Pop, крыніца

Click SQL --> click right mouse --> propretise --> Securiti -->tick SQL server and windows Authentication mode

90% поспеху!

2
дададзена

Гэтая база дадзеных URL ў няправільным фармаце

Радок DB_URL = "JDBC: SQLServer://лакальны: 1433; Databasename = Tema6, карыстальнік = са, пароль = 123456";

замест гэтага паспрабаваць гэта

Connection connection = DriverManager
                .getConnection("jdbc:sqlserver://localhost:1433;\\SQLEXPRESS;databaseName=Tema6","sa","123456");
1
дададзена

Праверце порт, на якім сканфігураваны SQL Server. Вы атрымліваеце гэтую дзіўную памылку, калі порт сканфігураваны як «дынамічны порт», і вы спрабуеце падключыцца да порта па змаўчанні.

Вы можаце праверыць, калі гэта праблема ці не спрабуе падлучыцца да сервера SQL праз SQLServer кліента.

  1. Усталюйце рэжым праверкі сапраўднасці "Праверка сапраўднасці SQL Server"
  2. Увядзіце імя сервера і порт у фармаце «имя_сервер, порт» у полі сервера
  3. Увядзіце імя карыстальніка і пароль і націсніце кнопку падлучэння

Калі падлучэння поспеху і тэхніка яго падводзіць вы атрымаеце дакладнае паведамленне пра памылку "не ўдалося Увайсці для карыстальніка ххх», то гэта пытанне

https://msdn.microsoft.com/en-IN/library/ms177440.aspx

1
дададзена
Захаваны дзень! Я з указаннем порта і JDBC марна гадзіны часу на гэта з паведамленнем лагіна не ўдалося. Выдалены порт ад злучэння і стрэлы усіх фіксаванага
дададзена аўтар Paul Zepernick, крыніца

Перайсці да SQL Server, абярыце ўласцівасці карыстальніка і ролю змяненняў сервера на сісадмін вырашыць гэтую праблему.

0
дададзена