JDBC SQLServerException:"لم يتم تكوين برنامج التشغيل هذا للمصادقة المتكاملة."

StackOverflow https://stackoverflow.com/questions/6087819

سؤال

أنا أكتب "ملحق من جانب الخادم" لـ خادم سمارت فوكس (سفس).في البرنامج النصي لتسجيل الدخول الخاص بي، أحتاج إلى إجراء اتصال بـ MS SQL Server، وهو ما أحاول القيام به باستخدام JDBC.لقد اختبرت كود JDBC في بيئة تصحيح الأخطاء الخاصة بي، وهو يعمل بشكل جيد.

لكن

عندما أضع الامتداد من جانب الخادم في مجلد "امتدادات" SFS (حسب المواصفات)، أحصل على com.microsoft.sqlserver.jdbc.SQLServerException:

"لم يتم تكوين برنامج التشغيل هذا للمصادقة المتكاملة."

لقد بحثت في Google عن هذا الخطأ، ووجدت أنه عادةً ما يكون بسبب الملف sqljdbc_auth.dll ليس في مسار النظام؛لقد قمت بنسخ هذا الملف إلى مجلد في مسار النظام الخاص بي، وما زال لا يعمل!

أي اقتراحات أخرى؟

هل كانت مفيدة؟

المحلول

توجد إصدارات مختلفة من sqljdbc_auth.dll لبنيات المعالج المختلفة (x86/x64/ia64).أي واحد تستخدمه على خادم SFS الخاص بك؟

يجب عليك اختيار ما يتوافق مع بنية JVM التي يعمل SFS ضمنها.لذا، إذا كنت تقوم بتشغيل Java 32 بت على جهاز 64 بت، فستحتاج إلى الإصدار x86، وليس الإصدار x64.

لم أستخدم SFS من قبل، لذلك لا أعرف ما إذا كان يكتب أي سجلات في أي مكان.إذا كان الأمر كذلك، فقد يكون من المفيد إلقاء نظرة على هذه السجلات لمعرفة ما إذا كان قد تم كتابة أي شيء مفيد لها.

يحرر:لا يمكنني أن أكون متأكدًا بنسبة 100% من أن SFS يستخدم Java 64 بت فقط لأنه ينفد من ملفات C:\Program Files بدلاً من C:\Program Files (x86).

لقد وجدت السطر التالي في مستندات SFS ضمن المقدمة > المتطلبات والتثبيت.على الرغم من أن هذا السطر ينطبق فقط على Linux بدلاً من Windows، فقد يشير إلى أن SFS على Windows يستخدم أيضًا Java 32 بت:

منذ الإصدار 1.5، يأتي SmartFoxServer مزودًا بنظام التشغيل x86 32 بت Sun Java Runtime.

إحدى الطرق السريعة لتحديد إصدار (إصدارات) Java التي قمت بتثبيتها هي إعطاء الأمر التالي في cmd الخاص بك: Java -version

سيعرض ما يلي على وحدة التحكم:

C:\Users\967097>java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

هنا، يمكنك رؤية نوع البت الخاص بإصدار جافا المثبت.

هل يعمل التطبيق الخاص بك إذا كنت تستخدم الإصدار x86 من sqljdbc_auth.dll بدلاً من الإصدار x64؟إذا بدأ العمل فجأة مع ملف x86 DLL، فيجب أن يستخدم SFS Java 32 بت.

هل هناك ملف دفعي يستخدم لبدء SFS؟إذا كان الأمر كذلك، فإن قراءة ذلك قد تساعد في الإشارة إلى المكان الذي يقوم SFS بتشغيل Java منه.ابحث أيضًا عن أي تغييرات تطرأ على PATH.يمكن لـ Java تحميل ملفات DLL فقط في ملف java.library.path خاصية النظام، وفي نظام التشغيل Windows، يتم تعيين هذا على قيمة PATH متغيرات البيئة.

إذا كنت لا تزال غير قادر على تحديد ما إذا كان SFS يستخدم Java 32 بت أو 64 بت، فحاول استخدام Process Explorer لإلقاء نظرة على البيئة التي بدأت بها عملية java.exe التي تقوم بتشغيل SFS.

نصائح أخرى

عند استخدام مصادقة Windows المتكاملة الأمن

  1. تحميل sqljdbc_6.0.8112.100_enu.exe من موقع مايكروسوفت
  2. تثبيت exe (قراءة التعليمات في الرمز البريدي المسار)
  3. نسخ sqljdbc_4.0/enu/auth/x64/sqljdbc_auth.dll إلى

    جافا/jre7/بن و

    جافا/jre7/lib

بعد هذا youj يجب أن تكون قادرا على الاتصال إلى السبات أدوات لسحب قاعدة البيانات في أدوات البيانات

file .dll في مجلد Jre الخاص بك: -
كنت أيضا مواجهة نفس المشكلة وبعد ذلك قمت بتقديم SQLJDBC_Auth.dll (x86 أو x64) اعتمادا على نظام التشغيل الخاص بك في مجلد JRE I.E JRE7 / BIN / FILE.DLL ثم قم بتشغيل تطبيقي.هذا يعمل بالنسبة لي، يمكنك أيضا تجربة ذلك قد يساعد هذا أيضا لك :)

قم بتنزيل برنامج تشغيل JDBC (Ver 7.2) من Microsoft ونسخ sqljdbc_auth.dll إلى c: \ program files \ java \ jre \ bin و c: \ program files \ java \ jdk \ binمجلد.سوف تذهب إلى مجلد برامج الملفات (x86) إذا كنت تقوم بتشغيل Java 32 بت.

In my case, I did the following to resolve:

Downloaded the Microsoft JDBC Driver 8.2 for SQL Server (zip) (found here - https://docs.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15).

Then in the zip file, I went into the following folders:

sqljdbc_8.2 > enu > auth > x64

and the copied "mssql-jdbc_auth-8.2.2.x64.dll" to C:\Program Files\Java\jdk-12.0.1\bin

i had faced same issue for the following windows authentication string

jdbc:sqlserver://host:1433;integratedSecurity=true

the default authenticationScheme=NativeAuthentication, So it might depends on some microsoft dlls. To fix it, the update authenticationScheme as NTLM as below

jdbc:sqlserver://host:1433;authenticationScheme=NTLM;integratedSecurity=true;domain=myDomain

note: username given was without domain

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top