কোনও নির্দিষ্ট এসকিউএল সার্ভার অ্যাক্সেস করে এমন সমস্ত আইপি বা ব্যবহারকারীদের সন্ধান করুন


10

ধরা যাক আমি একটি এসকিউএল সার্ভার পেয়েছি এবং কোন অ্যাপ্লিকেশন এটির সাথে সংযুক্ত রয়েছে তা আমার কোনও ধারণা নেই। সম্ভবত আমি একটি অ্যাপ্লিকেশন খুঁজে পেয়েছি তবে আমি নিশ্চিত নই যে এটি কেবলমাত্র এটি ব্যবহার করছে কিনা।

সমস্ত স্বতন্ত্র সংযোগগুলি খুঁজে পাওয়ার কোনও দুর্দান্ত উপায় আছে?

উত্তর:


14

ক্রিয়াকলাপ মনিটরে এসএসএমএসে বর্তমানে চলমান প্রক্রিয়াগুলি আপনি দেখতে পারেন।

আপনি এটি sys.dm_exec_sessions পাশাপাশি sys.dm_exec_connitions এবং sys.dm_exec_requests ব্যবহার করে এটি পেতে পারেন ।

প্রশ্ন:

SELECT DB_NAME(database_id) as [DB]
    , login_name
    , nt_domain
    , nt_user_name
    , status
    , host_name
    , program_name
    , COUNT(*) AS [Connections]
FROM sys.dm_exec_sessions
WHERE database_id > 0 -- OR 4 for user DBs
GROUP BY database_id, login_name, status, host_name, program_name, nt_domain, nt_user_name;

হোস্ট-নেম, প্রক্রিয়া নাম বা ডোমেন ব্যবহারকারীর নামগুলি প্রায়শই কেবল একটি আইপি ঠিকানার চেয়ে আরও বেশি তথ্য দেয়। অন্যান্য কলাম যেমন যোগ করা যেতে পারে: login_time,last_successful_logon

আইপি এবং অন্যান্য তথ্য দিয়ে একটি যোগদান পুনরায় উদ্ধার করা যাবে sys.dm_exec_connections উপর session_id: client_net_address, local_net_address, connect_time, পোর্ট, ...

sys.dm_exec_requests এছাড়াও দরকারী তথ্য দিতে পারে: commandটাইপ sql_handle,, ...

এই কোয়েরিটি কেবল একটি নমুনা। আপনাকে অবশ্যই JOINএই 3 টি দর্শন একসাথে করতে হবে এবং সেগুলির উভয়ের থেকে প্রাসঙ্গিক তথ্য আউটপুট / সঞ্চয় করতে হবে।

এসকিউএল সার্ভার পুনরায় চালু করা হলে এই দৃশ্য থেকে ডেটা অদৃশ্য হয়ে যায়। সুতরাং যদি অ্যাপ্লিকেশনটি নিয়মিতভাবে সংযুক্ত না হয় তবে কাজ বা স্ক্রিপ্ট (পাওয়ারশেল) ব্যবহার করে নিয়মিত ভিত্তিতে এগুলি সংরক্ষণ করা ভাল ধারণা হতে পারে।


3

জুলিয়েন কী পরামর্শ দিয়েছিল আমি সে বিষয়েও পরামর্শ দেব তবে আমার ধারণা এসকিউএল সার্ভার এজেন্টের মাধ্যমে ক্যোয়ারী নির্ধারণ করা আরও ভাল ধারণা হবে এবং তারপরে প্রতিবার এটি চালিত হলে আপনি কোনও তথ্যকে কোনও ভৌত টেবিলের মধ্যে ফেলে দেবেন। দু'জন ডিএমভি যোগ দিয়েছে sys.dm_exec_connectionsএবংsys.dm_exec_sessions

প্রথম একটি শারীরিক টেবিল তৈরি করুন

create table Session_Information 
( session_id int,
net_transport nvarchar(40),
host_name nvarchar(128),
program_name nvarchar(128),
nt_user_name nvarchar(128), 
connect_time datetime,
client_interface_name  nvarchar(128),
client_net_address varchar(48),
local_net_address varchar(48),
login_name nvarchar(128),
nt_domain nvarchar(128),
login_time datetime
);

তারপরে এই টেবিলটিতে রেকর্ড সন্নিবেশ করান:

Insert into Session_Information
  SELECT 
      c.session_id, 
      c.net_transport, 
      s.host_name, 
      s.program_name, 
      s.nt_user_name,
      c.connect_time, 
      s.client_interface_name,
      c.client_net_address,
      c.local_net_address, 
      s.login_name, 
      s.nt_domain, 
      s.login_time 
  FROM sys.dm_exec_connections AS c
  JOIN sys.dm_exec_sessions AS s
    ON c.session_id = s.session_id;

এসকিউএল সার্ভার এজেন্টের মাধ্যমে প্রতি 15 মিনিট বা তার বেশি সময় চালানোর জন্য এই সময়সূচী করুন এবং দিনের শেষে আপনি টেবিল থেকে আপনার পছন্দ মতো সমস্ত কিছু দেখতে পাবেন session_information


2

সফল এবং ব্যর্থ লগইনগুলির জন্য এসকিউএল সার্ভার লগইন অডিটিং সক্ষম করুন: https://docs.microsoft.com/en-us/sql/ssms/configure-login-auditing-sql-server-management-studio

অডিটিং সুযোগ পরিবর্তন করার জন্য একটি এসকিউএল পরিষেবা পুনরায় চালু করা দরকার। একবার পরিষেবা পুনরায় চালু হয়ে গেলে, সমস্ত সফল লগইন (ব্যবহারকারী) এবং এর আইপি ঠিকানা এসকিউএল সার্ভার লগগুলিতে লগ হওয়া শুরু করবে। এই ডেটা প্রায় এক সপ্তাহ বা 2 জন্য সংগ্রহ করা যায় এবং তারপরে পর্যবেক্ষণের সময়কালে এসকিউএল সার্ভার ডাটাবেসগুলি অ্যাক্সেস করা সমস্ত আইপি অ্যাড্রেসগুলি (এবং ব্যবহারকারী) তালিকাভুক্ত করার জন্য লগ ফাইলটি বিশ্লেষণ করা যেতে পারে।

যদি এসএসআরএস উপাদানটিও একই বাক্সে ইনস্টল করা থাকে, তবে এসএসআরএস পোর্টালে অ্যাক্সেস করে এমন সমস্ত লগইন তালিকাভুক্ত করার জন্য রিপোর্ট সার্ভার ডাটাবেসের এক্সিকিউশনলগ টেবিলটি বিশ্লেষণ করা যেতে পারে।


-2

থেকে SQL সার্ভার পান ক্লায়েন্ট IP ঠিকানা দ্বারা Sarvesh কুমার গুপ্ত :

CREATE FUNCTION [dbo].[GetCurrentIP] ()
RETURNS varchar(255)
AS
BEGIN
    DECLARE @IP_Address varchar(255);

   SELECT @IP_Address = client_net_address
    FROM sys.dm_exec_connections
    WHERE Session_id = @@SPID;

   Return @IP_Address;
END

এটি এটি চলমান সংযোগের ক্লায়েন্ট_নেট_ড্রেসটি ফিরিয়ে দেবে। এটি কোনও ক্ষেত্রে কার্যকর হতে পারে তবে এখানে যা প্রয়োজন তা নয়, বিশেষত যেহেতু অজানা অ্যাপ্লিকেশনটি এই ফাংশনটিকে কল করবে না।
জুলিয়ান ভাভাসিউর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.