Showing posts with label iis. Show all posts
Showing posts with label iis. Show all posts

Sunday, March 25, 2012

Connection Pooling on Analysis Services

Please may I have your assistance with the following issue. Let me 1st describe the scenario. The front end uses BEA Web Logic which queries an IIS Web Service that in turns queries MS Analysis Services 2005.

The Web Service builds the MDX queries dynamically and returns the results in XML.

Each time we run a query we open a connection using ADOMD, fire the MDX to return the result set then close the connection. However we don't think this will provide the best performance. So

1. Does the AS OLEDB provider handle connection pooling internally?

2. If not, is it possible to implement connection pooling in code inside our web service?

3. Are there other ways to implement connection pooling? for example does using HTTP connections automatically provide us with connection pooling?

Thanks

Here is an article about implementing connection pooling in AS2000, the same should apply for AS2005.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsql2k/html/sql2k_connpooling.asp

Edward.
--
This posting is provided "AS IS" with no warranties, and confers no rights.

|||

Hi Edward,

Many thanks for the document. Please have a look at the following.

http://www.codecomments.com/archive364-2005-1-379959.html

What would be ideal is when the web service starts this will automatically create a fixed number of connection pools to an AS Db

Our objective is to be able to reuse these connection pools by different users connecting to the same web service, obviously not simultaneously. The above suggests that the connection pool is destroyed?

Any thoughts would be greatly appreciated

Thanks

John

|||

No.

The post you mention suggests only that you should apply a bit more logic beyond simple 3 step;

1. Application starts.
2. It creates pool of open connecitions size N.
3. Pool of connections is destroyed when you shut down your web service.

It suggests you implement logic in your application that allows your application to grow conneciton pool above pre-set limit N:
In beginning your conneciton pool is N , if application used all of the connections from the conneciton pool and still needs more connections, connection pool will grow to N +x ... Your application will periodically check if it needs to srink connection pool back to N.

As for the different users connecting to your application. You can re-use connections if application is using same credentials to retrevie data from Analysis Server.
For instance if user A and B connecting to your web service running under W credentials. If your connections are opened under W , you can re-use them . If you open connections under A , you should not let B re-use that conneciton , otherwize you might show B too much data.

Edward.
--
This posting is provided "AS IS" with no warranties, and confers no rights.

|||

Hi Edward, Many thanks for your tips and based on your recommendation (to pursue AS 2000) downloaded the MS XML FOR AS SDK (AS 2000) and started to look at the various options

We used the reference to this

Public Shared p As New MSXmlAnalysisSCLib.ADOConPool

p.MaxSessions = 5

cnadomd = p.GetConnection("Data Source=myASServer" & ";Provider=msolap.3; initial catalog=myASDb")

Unfortunately we dropped the above method because there are no options to use XML? This will mean we would need to read the cells and construct our own XML string

Then we looked at the option of using http connection using the latest AS 2005 connection provider which seems to be set up to use connection pooling

conn.ConnectionString = "Data Source=http://myWebServer/OLAPhttp/msmdpump.dll" & ";Provider=msolap.3; initial catalog=myASDb"

As the content of the msmdpump.ini file suggests ::

<ConfigurationSettings>

<ServerName>localhost</ServerName>

<SessionTimeout>3600</SessionTimeout>

<ConnectionPoolSize>10</ConnectionPoolSize>

<MinThreadPoolSize>1</MinThreadPoolSize>

<MaxThreadPoolSize>10</MaxThreadPoolSize>

<MaxThreadsPerClient>5</MaxThreadsPerClient>

</ConfigurationSettings>

However from perfmon as well as SQL profiler, when issuing multiple connections simultaneously using the above http method it will use the same connection Id, but create multiple ‘current user sessions’. Also the observed execution time was rather slow.

The alternative is to use the following

conn.ConnectionString = "Data Source=myASServer;Provider=msolap.3; initial catalog=myASDb"

which is observed to work correctly when we use multiple connection simultaneously and performs well.

However the issue I have with the above is where do I instantiate the above so that I can re-use the connection. I noticed in IIS we can configure application pooling.

A low level example would be greatly appreciated, if you don’t mind?

Thanks

John

|||

First you can try and increase the ConnectionPoolSize in the msmdpump.ini .

Creating a single connection and having it be reused across several sessions should have comparable or better performance to opening new TCP connections all the time.

Edward.
--
This posting is provided "AS IS" with no warranties, and confers no rights.

Connection Pooling HELP !

I'm curious how connections are pooled under IIS. If you have several
applications setup under your website, does each one get its own pool? Or
is there only one pool created for all applications running under that
instance of IIS? What if two config files have connection strings which
specify a different number of connections in the pool...how is this
handled?
I'm curious as last night we noticed over 1500 connections to our SQL
Server...no wonder it is slammed. I'm wondering if we are getting multiple
pools of 100 connections and how to handle this...
I really appreciate any help on this....our live server is slammed and I'm
the one expected to come up with an answer ASAP.Every application gets its own pool. It would be stupid for one application
to wait for another to free up connections (think about running 2 websites
for 2 customers under the same IIS, neither would be happy to know his
application's performance - or lack of it :) - it being affected by the
running of the other).
Moreover, a pool is created for EVERY DISTINCT connection STRING, even if
the two connection strings are logically equivalent (you switch places of
fields, you add whitespace).
"Tim Greenwood" <tim_greenwood A-T yahoo D-O-T com> wrote in message
news:uZz04fzVGHA.1736@.TK2MSFTNGP10.phx.gbl...
> I'm curious how connections are pooled under IIS. If you have several
> applications setup under your website, does each one get its own pool? Or
> is there only one pool created for all applications running under that
> instance of IIS? What if two config files have connection strings which
> specify a different number of connections in the pool...how is this
> handled?
> I'm curious as last night we noticed over 1500 connections to our SQL
> Server...no wonder it is slammed. I'm wondering if we are getting
> multiple pools of 100 connections and how to handle this...
> I really appreciate any help on this....our live server is slammed and
> I'm the one expected to come up with an answer ASAP.
>|||I understand about running two websites...but what about different
applications under the SAME website.
Hmmm I read on a MS website that the distinct connection string was not
true. That the only things that had to match was initial catalog,
connection timeout, user, and password. And it gave the project and various
connection string changes to show that the pool did not change. Here is the
link...
http://www.sql-server-performance.c...oling_myths.asp
It is hard to know what to believe. It is weird, even every MS developer
comes back with different answers.
Thank you so much for taking time to answer. I see a need to greatly reduce
our pool sizes.
"Gabriel Lacatus" <cyberdude@.nospam.nospam> wrote in message
news:uVJB8mzVGHA.4792@.TK2MSFTNGP14.phx.gbl...
> Every application gets its own pool. It would be stupid for one
> application to wait for another to free up connections (think about
> running 2 websites for 2 customers under the same IIS, neither would be
> happy to know his application's performance - or lack of it :) - it being
> affected by the running of the other).
> Moreover, a pool is created for EVERY DISTINCT connection STRING, even if
> the two connection strings are logically equivalent (you switch places of
> fields, you add whitespace).
> "Tim Greenwood" <tim_greenwood A-T yahoo D-O-T com> wrote in message
> news:uZz04fzVGHA.1736@.TK2MSFTNGP10.phx.gbl...
>|||Pooling has changed over the years so there's a lot of out of date info
floating around. A pool is assigned per executable that has connections
open. Depending on your isolation setting in your IIS config, different
applications may or may not run in their own COM+ server process. Look at
the connections in sysprocesses and see if they are all for the same user or
for different users. Also make sure connections are being closed so they
are returned to the pool. If you have 1500 open connections and you don't
have 15 svchost processes running, either it's likely you are opening
connections past the pool size because MDAC doesn't think the connections
are reusable or you are not closing connections.
This posting is provided "AS IS" with no warranties, and confers no rights.
Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm
"Tim Greenwood" <tim_greenwood A-T yahoo D-O-T com> wrote in message
news:OzPouszVGHA.5364@.tk2msftngp13.phx.gbl...
>I understand about running two websites...but what about different
>applications under the SAME website.
> Hmmm I read on a MS website that the distinct connection string was not
> true. That the only things that had to match was initial catalog,
> connection timeout, user, and password. And it gave the project and
> various connection string changes to show that the pool did not change.
> Here is the link...
> http://www.sql-server-performance.c...oling_myths.asp
> It is hard to know what to believe. It is weird, even every MS developer
> comes back with different answers.
> Thank you so much for taking time to answer. I see a need to greatly
> reduce our pool sizes.
>
> "Gabriel Lacatus" <cyberdude@.nospam.nospam> wrote in message
> news:uVJB8mzVGHA.4792@.TK2MSFTNGP14.phx.gbl...
>

Tuesday, March 20, 2012

Connection of SQL server 2000 with ASP in IIS6.0

Dear Friend,

Please tell me how to connect sql server and ASP in IIS 6.0.Earlier in IIS 5 I have connected in SQL server with ASP with DSN connection,the same global.asa file is not working in IIS6.0.But Asp pages are not giving any error ,but they are no just taking value from Database.I mean server connection is not establishing..

Could you please help in matter

Thank you

Graceson MAthewIf you are not recieving an error, I highly doubt it is your connection string.

Sunday, March 11, 2012

connection going to sleep?

Ok, here's the scenario. On a Windows 2003 Server I have MSSQL 2000
installed. On another test server I have Windows 2003 server, IIS 6 and
Coldfusion installed. There has been an account created in SQL and assigned
permissions. My coldfusion web site makes multiple calls to the database
server using the account created. All is wonderful. Then, all of a sudden
I start getting connection problems (SQL STATE: HTY00). My web site cannot
connect using that account. I can still ping the SQL server from the
development server so I know thats not the problem. So I tried creating an
ODBC connection using that account. Same error. Sometimes resetting the
password in SQL works. A few days ago, however, I had to reboot the SQL
server and now everything is fine again, until the next time. Can anyone
explain to me why that user account seems to "goes to sleep" every few
days' There have been occasions when it's been fine for a week or two
but sooner or later, it will always do this!when you're dealing with connection problems it helps to do things like:
* try the connection from a different client
* check to see if you can connect from other accounts
* check to see if you can connect from a Windows and/or SQL authenticated
account
* check the SQL Server error logs for messages....
--
Brian Moran
Principal Mentor
Solid Quality Learning
SQL Server MVP
http://www.solidqualitylearning.com
"Steve" <StephenGL@.sabian.ca> wrote in message
news:5Lovb.33154$R13.985896@.ursa-nb00s0.nbnet.nb.ca...
> Ok, here's the scenario. On a Windows 2003 Server I have MSSQL 2000
> installed. On another test server I have Windows 2003 server, IIS 6 and
> Coldfusion installed. There has been an account created in SQL and
assigned
> permissions. My coldfusion web site makes multiple calls to the database
> server using the account created. All is wonderful. Then, all of a
sudden
> I start getting connection problems (SQL STATE: HTY00). My web site
cannot
> connect using that account. I can still ping the SQL server from the
> development server so I know thats not the problem. So I tried creating
an
> ODBC connection using that account. Same error. Sometimes resetting the
> password in SQL works. A few days ago, however, I had to reboot the SQL
> server and now everything is fine again, until the next time. Can anyone
> explain to me why that user account seems to "goes to sleep" every few
> days' There have been occasions when it's been fine for a week or two
> but sooner or later, it will always do this!
>

Connection from ASP page to SQL Server Express

Hi!

I have two servers, the web (with IIS - win2003) and the test data
server (winXPpro with SQL Express)
I'm trying to connect to the db but with no success...
here is the connection string I'm using:
sConn = "Driver=SQLNCLI;
Server=marco-server\SQLEXPRESS;
Database=grimp;
Uid=grimpuser;
Pwd=somePassword;"

I get this:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Driver Manager] Data source name not found and no
default driver specified

I've tried also with Driver={SQL Native Client} but I get the same
error.

do I have to install something on the web server?(ma.giorgi@.gmail.com) writes:

Quote:

Originally Posted by

I have two servers, the web (with IIS - win2003) and the test data
server (winXPpro with SQL Express)
I'm trying to connect to the db but with no success...
here is the connection string I'm using:
sConn = "Driver=SQLNCLI;
Server=marco-server\SQLEXPRESS;
Database=grimp;
Uid=grimpuser;
Pwd=somePassword;"
>
I get this:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Driver Manager] Data source name not found and no
default driver specified
>
I've tried also with Driver={SQL Native Client} but I get the same
error.


Try using "Provider", rather than "Driver".

--
Erland Sommarskog, SQL Server MVP, esquel@.sommarskog.se
Books Online for SQL Server 2005 at
http://www.microsoft.com/technet/pr...oads/books.mspx
Books Online for SQL Server 2000 at
http://www.microsoft.com/sql/prodin...ions/books.mspx

Wednesday, March 7, 2012

Connection error to As 2000 cube data source

Here is my setup: I have Reporting Service and SQL Server 2000 in one box
(Box A), and IIS and Analysis Service in another box (Box B), which has
couple of cubes based on the database in Box A, using SQL Authentication and
Allow save password. Create AS2000 data source at Reporting Project, then
create a report, I can preview the report fine in VS.2003. But I got the
following error after deploying the report to the reportserver and browse the
report:
Cannot create a connection to data source 'Cube'. (rsErrorOpeningConnection)
Get Online Help
Database 'Cube' does not exist.
Do I miss anything?
Thanks
DonAre the cubes on the same domain with your report server?
If not, it won't connect.
"Don" <Don@.discussions.microsoft.com> wrote in message
news:26BEED36-14C5-48A1-87DA-E751CB391888@.microsoft.com...
> Here is my setup: I have Reporting Service and SQL Server 2000 in one box
> (Box A), and IIS and Analysis Service in another box (Box B), which has
> couple of cubes based on the database in Box A, using SQL Authentication
> and
> Allow save password. Create AS2000 data source at Reporting Project, then
> create a report, I can preview the report fine in VS.2003. But I got the
> following error after deploying the report to the reportserver and browse
> the
> report:
> Cannot create a connection to data source 'Cube'.
> (rsErrorOpeningConnection)
> Get Online Help
> Database 'Cube' does not exist.
> Do I miss anything?
> Thanks
> Don
>|||Chris,
Thanks for the quick response. Yes, my OLAP server and Report Server on the
same domain, and my domain user account on both boxes.
"Chris" wrote:
> Are the cubes on the same domain with your report server?
> If not, it won't connect.
> "Don" <Don@.discussions.microsoft.com> wrote in message
> news:26BEED36-14C5-48A1-87DA-E751CB391888@.microsoft.com...
> > Here is my setup: I have Reporting Service and SQL Server 2000 in one box
> > (Box A), and IIS and Analysis Service in another box (Box B), which has
> > couple of cubes based on the database in Box A, using SQL Authentication
> > and
> > Allow save password. Create AS2000 data source at Reporting Project, then
> > create a report, I can preview the report fine in VS.2003. But I got the
> > following error after deploying the report to the reportserver and browse
> > the
> > report:
> >
> > Cannot create a connection to data source 'Cube'.
> > (rsErrorOpeningConnection)
> > Get Online Help
> > Database 'Cube' does not exist.
> > Do I miss anything?
> >
> > Thanks
> >
> > Don
> >
>
>

Saturday, February 25, 2012

Connection Error from ASP.Net under IIS: provider: Named Pipes Provider, error: 40

We experience the 40 error when our Asp.net code runs under IIS and uses named pipes to a sql server 2005 named instance.

We've tried all suggestions found on blogs and KB articles such as making sure the named pipes protocol is enabled, making sure the Browser service is started, making sure Allow Remote Connections is enabled, making sure we're not using Asp.Net 2.0 membership providers, and the list goes on and on.

We boiled it down to a simple test scenario. We open a SqlConnection to the sql 2005 box in the code with the intention of binding a datareader to a gridview, but it never gets that far because the connection.Open() fails.

If we run this test application as a virtual directory in IIS and Asp.Net 2.0, the connection.Open() fails.

If we run this test application from Visual Studio .Net using Cassini (PWS), the connection.Open() succeeds and binds to the gridview.

What could be causing the connection to fail under IIS but succeed under Cassini? We've tried setting IIS to run as a domain user and with digest authentication enabled. That made no difference.

Any help or insight is appreciated!

Could you try to answer the following questions though some of them may be already implied by your post?

(1) Is this remote connection or local connection?

(2) Is the account that runing your visual studio.net the the same as your IIS. Do you impersonate client connection in IIS?

(3) Can you make direct connection to your backend sqlserver from your virtual studio or sql server management studio?

(4) Can you try connecting using TCP instead? If not, what is the error code?

|||

(1) Is this remote connection or local connection?

-Remote connection

(2) Is the account that runing your visual studio.net the the same as your IIS. Do you impersonate client connection in IIS?

-Same account, windows authentication. No impersonation

(3) Can you make direct connection to your backend sqlserver from your virtual studio or sql server management studio?

-Management Studio works, Cassini works.. IIS does not

(4) Can you try connecting using TCP instead? If not, what is the error code?

TCP gives "server actively refused connection" error

|||

Does your connection string like "servername\instancename" or something else?

The TCP failure indicates either the server TCP listener is not up or client uses different TCP port to connect. So please check whether the TCP is enabled or not. Restart the server after the configuration change. Then check if the connection string has instancename specified. Once you find out which port the server is listening on, you can also use "tcpTongue Tiedervername,port" to connection to the server.

Connection error - please help

I'm setting up a development environment on XP Pro. I'm working with classi
c
ASP. IIS is working great, but when trying to connect to my SQL Server
Database, I get:
Microsoft OLE DB Provider for SQL Server (0x80004005)
[DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or
access
denied.
I've checked and re-checked both the name of the database and server, plus
everything looks configured correctly in Enterprise Manager (SQL server and
Windows is checked).
In ODBC, after I configure my System DSN, I test it and it connects
correctly. But this dang error persists. I'm at my wits end with it all,
can you help?
Any comments would be very very appreciated.
Thank you.Try making a network trace from the IIS machine to SQL and review the
traffic.
Thanks,
Kevin McDonnell
Microsoft Corporation
This posting is provided AS IS with no warranties, and confers no rights.|||Why IIS machine, what is the relation between IIS and SQL
server here? What kind of trace should I do, can you
explain it in a simple way.
Thanks a lot-Rob

>--Original Message--
>Try making a network trace from the IIS machine to SQL
and review the
>traffic.
>Thanks,
>Kevin McDonnell
>Microsoft Corporation
>This posting is provided AS IS with no warranties, and
confers no rights.
>
>.
>|||IIS is the client to SQL. I"m asuming that they are two different machines.
client -->IIS-->SQL
IIS is opening and closing all the connection to SQL, not the client
browser. So, making a network trace from IIS will show the traffic to the
server.
Thanks,
Kevin McDonnell
Microsoft Corporation
This posting is provided AS IS with no warranties, and confers no rights.|||I have the same problem. Help.
****************************************
******************************
Sent via Fuzzy Software @. http://www.fuzzysoftware.com/
Comprehensive, categorised, searchable collection of links to ASP & ASP.NET
resources...

Connection error - please help

I'm setting up a development environment on XP Pro. I'm working with classic
ASP. IIS is working great, but when trying to connect to my SQL Server
Database, I get:
Microsoft OLE DB Provider for SQL Server (0x80004005)
[DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access
denied.
I've checked and re-checked both the name of the database and server, plus
everything looks configured correctly in Enterprise Manager (SQL server and
Windows is checked).
In ODBC, after I configure my System DSN, I test it and it connects
correctly. But this dang error persists. I'm at my wits end with it all,
can you help?
Any comments would be very very appreciated.
Thank you.
Try making a network trace from the IIS machine to SQL and review the
traffic.
Thanks,
Kevin McDonnell
Microsoft Corporation
This posting is provided AS IS with no warranties, and confers no rights.
|||Why IIS machine, what is the relation between IIS and SQL
server here? What kind of trace should I do, can you
explain it in a simple way.
Thanks a lot-Rob

>--Original Message--
>Try making a network trace from the IIS machine to SQL
and review the
>traffic.
>Thanks,
>Kevin McDonnell
>Microsoft Corporation
>This posting is provided AS IS with no warranties, and
confers no rights.
>
>.
>
|||IIS is the client to SQL. I"m asuming that they are two different machines.
client -->IIS-->SQL
IIS is opening and closing all the connection to SQL, not the client
browser. So, making a network trace from IIS will show the traffic to the
server.
Thanks,
Kevin McDonnell
Microsoft Corporation
This posting is provided AS IS with no warranties, and confers no rights.
|||I have the same problem. Help.
************************************************** ********************
Sent via Fuzzy Software @. http://www.fuzzysoftware.com/
Comprehensive, categorised, searchable collection of links to ASP & ASP.NET resources...

Friday, February 17, 2012

connecting using a trusted connection

Hello,

I appologize if this is in the wrong spot, but it seemed like the appropriate place.

We have IIS installed on one box and SQL on another. We use a trusted connection to connect.

When we try an connect to our DB, we don't get an error, the page just refreshes. From what i have gathered, it looks like we are not being authenticated. We have the ASPNET domain user on both boxes and its configured with the correct permissions, but we still can't connect.

Do i need to set up or give permissions to another account i dont know about, or is there some file that needs access?

Have you checked SQL logs, or IIS logs? Event logs? If it's a securtiy issue it should be logged. Also make sure you really are using the ASP.NET account when you access the box, it could be an authenticated user's credentials that are passed. And keep in mind that by defualt the ASp.NET process account is not a domain account, it's local.

Jeff

|||There are two permissions in SQL Server, the server permissions in the management section of Enterprise Manager or Management Studio and the database permissions are in the database under permissions and in SQL Server 2005 under security in the database. You may have created one and not the other. Hope this helps.

Sunday, February 12, 2012

Connecting to SQL Server from IIS in DMZ

My Web Server is standalone, in a DMZ and not a member of the domain the SQL server belongs to. The SQL server is internal and behind a firewall.

I followed the recommendations on Microsoft's website Using the ASP.NET process identity
and local mirrored ASPNET accounts:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/SecNetch12.asp

But get the error: Login failed for user '(null)'. Reason: Not associated with a trusted SQL Server connection

From what I read in the document it should try and connect with the ASPNET Process identity.

I have tested with Impersonation using a local windows account and UserID and Password in the connection string and can connect to the SQL server through the firewall so the relevant ports etc are open.

However I don't want to have user Id's and passwords in the connection string and would like to use integrated security.

Pls help as I am tearing all my hair out!!!!!This must be frustrating for you.

Could you post the connection string that is failing and maybe that will spark the answer?

Terri|||Thanks for your reply, however I organised a contractor to come in and check it out and when I showed him what the problem was it didn't happen and everything worked ok!!

Arrrggghhh!!! And nothing at all has/was changed.

Typical...

Cheers|||I have the EXACT same problem, only mine isn't fixing itself! I used the mirrored local ASPNET account and I am getting the login failed for user '(null)' message.

Connection string is: Data Source=<server name>;Initial Catalog=<database name>;Integrated Security=SSPI;

Any ideas?|||I spent hours upon hours trying to fix it.
Have you changed the 'machine' password in machine.config to match your local ASPNET Account?

Basically I changed that and set up the accounts and I got the error you are talking about, it came right by itself, when I think back it is possible I did a reboot of the webserver.|||You were right, I just needed to reboot the webserver. I guess the thing to remember is always reboot when you change machine.cofig.

Thanks, Cove!|||No problem. Probably stopping and starting the relevant services would have done the trick too??

Friday, February 10, 2012

Connecting to SQL Server 2005 Express using IIS 6.0

Hello,

I can connect to amachine using SQL server 2000 using IIS 6.0. However, I am having trouble connecting to my server that has SQL server express using IIS 6.0. I'm using similar setting for both servers. Is there something else i have to do for SQL server express?

I'm not sure why this is the case. Any information that could help resolve this failed connection would be greatly appreciated.

Thank you.

Burhan

I would make sure that the remote connections have been enabled on the server, by default this is turned off.

How to configure SQL Server 2005 to allow remote conections
http://support.microsoft.com/default.aspx?scid=kb;EN-US;914277

|||

Thank you for your email. My sql server express are already configured according to the tips on this page. I failed to mention that i can connect to the database. It's only when i have to try and connect to the databse wirelessly i'm having trouble establising a connection to the database. But when i connect wirelessly to SQL 2000 i have no trouble.

Any more information would be appreciated.

Burhan