2012-01-27 3 views
2

우리 회사가 엑셀에서 저장 프로 시저를 실행하고 스프레드 시트에 데이터를 반환 할 수 있도록 약 100 (전국 분산) 그들의 판매 사람들을 가지고 싶어.Excel을 SQL Server 2008에 안전하게 연결하려면 어떻게합니까?

우리는 내가이 작업을 수행 할 수있는 안전한 방법을 강구해야 SQL 서버 2008이있다.

나는 사용자가 자신이 선택한 매개 변수를 기반으로 데이터를 새로 고침 명령 단추를 밀어 수 Excel에서 양식을 만들 것입니다.

  1. Excel 서버와의 연결이 안전하도록하려면 어떻게해야합니까?
  2. 어떻게 Excel에서 저장 프로 시저를 실행합니까? http://office.microsoft.com/en-us/excel-help/connect-to-import-sql-server-data-HA010217956.aspx

    Windows 인증을 선택 윈도우 사용자 이름과 현재 사용자의 암호를 사용하려면이 옵션 :

내가이 아주 좋은 정보가 될 것으로. 가장 안전한 방법 인 이지만 많은 사용자가 서버에 연결되어있을 때 성능에 영향을 줄 수 있습니다.

그러나, 나는이에 대한 귀하의 의견을 부탁합니다.

예, 영업 담당자에게 Windows 로그인이 있지만 실제로 데이터 기준을 지정한 다음 저장 프로 시저로 기준을 전송 한 다음 서버에서 데이터를 가져 오는 경우이 솔루션을 사용할 수 있습니까? 사용자가 데이터베이스에 직접 연결을 허용

+0

웹 인터페이스 등을 사용할 수 없습니까? 저장 프로 시저를 실행하고 csv/xls를 반환하는 것은 매우 쉽습니다. 엑셀에서 이것을하는 것은 완전히 불필요한 것처럼 보입니다. – user606723

+0

@ user606723 전적으로 동의하지만 사장님이 Excel을 사용하고 싶습니다 –

+0

이 VBA를 배포 할 것이므로 가능한 한 작고 단순한 VBA를 만들려고합니다. 그것을 할 수있는 좋은 방법은, .. 될 것입니다 VBA는 CSV 웹 인터페이스에서 다운로드 = P는. 당신은 또한 상사에게이 일을 Excel에서하는 것이 끔찍한 해결책이라는 것을 확신시켜야합니다. – user606723

답변

3

은 까다 롭습니다. 우선, 잘 격리 된 관리자 및 서비스 계정보다 사용자 계정이 더 자주 손상되므로 사용자가없이 공격 할 수 있습니다. 그런데 공격자가 시스템에 침입 할 수 있도록 사용자 계정을 해킹해야하며 모든 사용자가 자신의 자격 증명을 갖고 있으면 SQL Server에 제어 기능을 잘 세분화해야합니다.

엑셀 - 기본 인터페이스를 사용

는 대부분의 개발자들이 지난 십여 년 동안 그것을 어떻게했는지입니다 VBA 또는 VSTA를 통해 그 일에서 해당 다르지 않다. 이러한 방법은 네트워크만큼 안전합니다. Excel 기본 기능은 관계없는 참조 없이도 작동합니다. 유지 관리 목적으로 특히 유용합니다. 주요 차이점은 임의의 쿼리를 수행 할 수있는 능력에있는 것 같습니다. 보안 및 데이터 무결성을 위해 이것은 최선의 방법 일 것입니다.

저장 프로 시저를 실행하는 것은 좋은 생각이 아닙니다. 사용자가 자주 조정할 필요가있는 (원하는) 경우 대규모 지원 요구 사항을 얻을 수 있기 때문입니다. 보기로 할 수 있습니까? Excel의 내장 된 필터링 및 분류 기능은 매우 강력합니다. 그것은 나의 첫 번째 접근 방법입니다.

필요에 따라 여러 가지 방법이 있습니다

1 - 통합 문서에 관련된 VBA 매크로에 액세스 코드를 이동 - 데이터베이스가 개별 사용자

2에 데이터를 묶을 수 있도록 스키마를 수정 . 권장하지는 않지만 ADO를 직접 사용할 수 있습니다. 사용자 계정에 대한 액세스 권한을 가진 공격자가 사용자가 수행 할 수있는 모든 작업을 수행 할 수 있기 때문에 데이터베이스 측에서는 보안 설정을 확실히해야합니다.

VBA 환경의 도구 -> 참조에서 최신 Microsoft ADO 버전을 찾으려면 VBA 경로로 이동하십시오.

Dim Connection as ADODB.Connection 
Set Connection = new ADODB.Connection 
Connection.Open"Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;" 
Dim command As ADODB.command 
command.CommandText = "exec sp_something" 
Dim Parameters(2) As ADODB.Parameter 

Set Parameters(1) = New ADODB.Parameter 
Parameters(1).Name = "field_name" 
Parameters(1).Type = adVarChar 
Parameters(1).Size = 50 

Set Parameters(2) = New ADODB.Parameter 
Parameters(2).Name = "field_name_2" 
Parameters(2).Type = adVarChar 
Parameters(2).Size = 50 

Dim i As Integer 
For i = LBound(Parameters) To UBound(Parameters) 
    command.Parameters.Append Parameters(i) 
Next i 

Dim Records As ADODB.Recordset 
Set Records = command.Execute 

는 시트 또는 입력 상자를 통해 값을 설정하여 버튼, 해당 매크로를 묶어, 멀리 화재 : VBA 코드는 다음과 같이 보인다. 그러나 나는 경고를 되풀이한다.이 방법을 사용하면 엄청난 지원 요구가 발생한다. 사람들이 맞춤 데이터를 추출하기를 원한다면, 그 데이터에 대해 매우 특별하게됩니다.

+0

답장을 보내 주셔서 감사합니다. 사용자가 매개 변수를 제공해야하므로보기를 수행 할 수 있는지 확실하지 않습니다. 보기에도 여전히 가능합니까? Windows 인증을 통해이 작업을 수행하는 것이 좋습니다라고 제안 하시겠습니까? –

+0

연결이 가로 채지 못할 수 있다는 점에서 안전합니다. 제한된 수의 DB 객체에서만 읽기 권한을 부여하는 것에 대해주의를 기울이는 한 데이터 무결성을 유지한다는 관점에서 안전합니다. 대부분의 경우 잘 구축 된 웹 아키텍처보다 공격 대상이되지만, 사용자가 합리적으로주의를 기울이는 한 절충해서는 안되며 데이터 유실이 아니라 데이터 도난의 피해를 입을지라도 . –

+0

뷰를 사용하면 매개 변수를 하드 코드 할 수 있지만 아니요,이 구성을 사용하여 매개 변수를 제공 할 수 없습니다. 그래서 필자는 Excel에 내장 된 필터링 및 정렬에 대해 언급했는데, 교육을받은 사용자는 이러한 기본 도구를 사용하여 필요한 데이터를 추출 할 수있었습니다. –

1

당신이 링크 된 기사 대신 ADO 라이브러리에 대한 참조와 기술적 인 SQL 사용자와의 일반적인 연결 문자열로 VBA 스크립트를 사용하고 싶습니다.

이 경우 암호가 연결 문자열에 있으므로이 기술 사용자는 저장 프로 시저를 실행하는 것 외에 다른 권한이 없어야합니다.

자세한 내용이 필요하면 알려주세요.

+0

답장을 보내 주셔서 감사합니다. 이렇게하려면 OK 도구를 능가합니까? –

+0

이상적인 세상에서 Excel은 존재하지 않습니다. 나는 괜찮다고 말하지는 않지만, 상황을 더욱 악화 시켰습니다. 회사 부서에는 적절한 도구가 없지만 핵심 프로세스의 KPI를 측정 할 필요성이 있습니다. 간단히 말해서 작동하도록하십시오. 스위스 군용 칼로 저녁을 먹을 수있는 것처럼. 좋지는 않지만 작동합니다. –

관련 문제